Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
ApiRequest.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_COMMS_APIREQUEST_HPP_
2#define IV_SRC_COMMS_APIREQUEST_HPP_
3
4#include "third_party/HTTPRequest.hpp"
5#include "third_party/JSON.hpp"
6
7#include <string>
8#include <vector>
9
10using JSON = nlohmann::json;
11using HeaderFields = std::vector<std::pair<std::string, std::string>>;
12
13namespace iv::comms::api
14{
15
17{
18public:
19 static std::string urlEncode(const std::unordered_map<std::string_view, std::string> &queryParams);
20
21 ApiRequest() = delete;
22 ApiRequest(const std::string &apiBaseURL, std::string_view apiRoute);
23
24 bool post(const JSON &body, const std::optional<HeaderFields> &headers = std::nullopt,
25 const std::optional<std::reference_wrapper<JSON>> &responseBody = std::nullopt);
26 bool get(JSON &responseBody, const std::unordered_map<std::string_view, std::string> &queryParams = {}) const;
27 bool put(const JSON &body, const HeaderFields *headers = nullptr) const;
28 bool DELETE(JSON &responseBody, const std::unordered_map<std::string_view, std::string> &queryParams = {}) const;
29
30private:
31 std::string m_apiBaseURL;
32 std::string m_apiRoute;
34};
35
36}// namespace iv::comms::api
37
38#endif//IV_SRC_COMMS_APIREQUEST_HPP_
std::vector< std::pair< std::string, std::string > > HeaderFields
Definition ApiRequest.hpp:11
nlohmann::json JSON
Definition structs.hpp:7
Definition ApiRequest.hpp:17
bool post(const JSON &body, const std::optional< HeaderFields > &headers=std::nullopt, const std::optional< std::reference_wrapper< JSON > > &responseBody=std::nullopt)
POST request to send a request to the API. This request is used to create a new resource.
Definition ApiRequest.cpp:61
bool get(JSON &responseBody, const std::unordered_map< std::string_view, std::string > &queryParams={}) const
GET request with query params. This request is used to get a resource.
Definition ApiRequest.cpp:127
HeaderFields m_headers
Definition ApiRequest.hpp:33
bool DELETE(JSON &responseBody, const std::unordered_map< std::string_view, std::string > &queryParams={}) const
Definition ApiRequest.cpp:239
bool put(const JSON &body, const HeaderFields *headers=nullptr) const
PUT request to send a request to the API. This request is used to update a resource.
Definition ApiRequest.cpp:188
std::string m_apiRoute
Definition ApiRequest.hpp:32
std::string m_apiBaseURL
Definition ApiRequest.hpp:31
static std::string urlEncode(const std::unordered_map< std::string_view, std::string > &queryParams)
Definition ApiRequest.cpp:12
Definition ApiCommunicationController.cpp:12