1#ifndef IV_SRC_COMMS_APIREQUEST_HPP_
2#define IV_SRC_COMMS_APIREQUEST_HPP_
4#include "third_party/HTTPRequest.hpp"
5#include "third_party/JSON.hpp"
10using JSON = nlohmann::json;
11using HeaderFields = std::vector<std::pair<std::string, std::string>>;
19 static std::string
urlEncode(
const std::unordered_map<std::string_view, std::string> &queryParams);
22 ApiRequest(
const std::string &apiBaseURL, std::string_view apiRoute);
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;
28 bool DELETE(
JSON &responseBody,
const std::unordered_map<std::string_view, std::string> &queryParams = {})
const;
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