Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
ApiCommunicationDriver.hpp
Go to the documentation of this file.
1#ifndef APICOMMUNICATIONDRIVER_HPP
2#define APICOMMUNICATIONDRIVER_HPP
3
6#include "core/defines.hpp"
7
8#include <string>
9
10namespace iv::comms::api
11{
12
14{
15public:
17
18 void setApiRoute(const std::string_view apiRoute)
19 {
20 m_apiRoute = apiRoute;
21 }
22
23 [[nodiscard]] std::string getApiRoute() const
24 {
25 return m_apiRoute;
26 }
27
28 bool post(const JSON &body, const std::optional<HeaderFields> &headers = std::nullopt,
29 const std::optional<std::reference_wrapper<JSON>> &responseBody = std::nullopt,
30 const std::optional<std::string_view> &route = std::nullopt) const;
31 bool get(JSON &responseBody, const std::unordered_map<std::string_view, std::string> &queryParams = {},
32 const std::optional<std::string_view> &route = std::nullopt) const;
33 bool DELETE(JSON &responseBody, const std::unordered_map<std::string_view, std::string> &queryParams = {},
34 const std::optional<std::string_view> &route = std::nullopt) const;
35
36 [[nodiscard]] bool containsNetworkConfig(iv::types::ipAddress ip, iv::types::ipPort port) const;
37
38 void configure(const iv::model::comms::NetworkData &commConfig) override;
39 iv::comms::eResponse init() override;
40 iv::comms::eResponse end() override;
42 iv::comms::eResponse start() override;
43 iv::comms::eResponse stop() override;
44 bool isOnline() override;
45
46private:
47 std::vector<iv::types::httpUrl> m_apiBaseUrls;
48 std::string m_apiRoute;
49
50 mutable std::mutex m_commDriverMutex;
51};
52
53}// namespace iv::comms::api
54
55#endif//APICOMMUNICATIONDRIVER_HPP
nlohmann::json JSON
Definition structs.hpp:7
Definition ICommunicationDriver.hpp:13
Definition ApiCommunicationDriver.hpp:14
std::vector< iv::types::httpUrl > m_apiBaseUrls
Definition ApiCommunicationDriver.hpp:47
iv::comms::eResponse stop() override
Definition ApiCommunicationDriver.cpp:165
bool DELETE(JSON &responseBody, const std::unordered_map< std::string_view, std::string > &queryParams={}, const std::optional< std::string_view > &route=std::nullopt) const
Definition ApiCommunicationDriver.cpp:48
void setApiRoute(const std::string_view apiRoute)
Definition ApiCommunicationDriver.hpp:18
bool isOnline() override
Definition ApiCommunicationDriver.cpp:178
void configure(const iv::model::comms::NetworkData &commConfig) override
Definition ApiCommunicationDriver.cpp:79
std::mutex m_commDriverMutex
Definition ApiCommunicationDriver.hpp:50
iv::comms::eResponse start() override
Definition ApiCommunicationDriver.cpp:150
bool containsNetworkConfig(iv::types::ipAddress ip, iv::types::ipPort port) const
Definition ApiCommunicationDriver.cpp:66
iv::comms::eResponse end() override
Definition ApiCommunicationDriver.cpp:108
std::string m_apiRoute
Definition ApiCommunicationDriver.hpp:48
std::string getApiRoute() const
Definition ApiCommunicationDriver.hpp:23
iv::comms::eResponse reconnect() override
Definition ApiCommunicationDriver.cpp:115
iv::comms::eResponse init() override
Definition ApiCommunicationDriver.cpp:101
bool post(const JSON &body, const std::optional< HeaderFields > &headers=std::nullopt, const std::optional< std::reference_wrapper< JSON > > &responseBody=std::nullopt, const std::optional< std::string_view > &route=std::nullopt) const
Definition ApiCommunicationDriver.cpp:13
bool get(JSON &responseBody, const std::unordered_map< std::string_view, std::string > &queryParams={}, const std::optional< std::string_view > &route=std::nullopt) const
Definition ApiCommunicationDriver.cpp:30
Definition ApiCommunicationController.cpp:12
eResponse
Definition enums.hpp:285
uint16_t ipPort
Definition types.hpp:41
std::string ipAddress
Definition types.hpp:40
Definition NetworkData.hpp:18