4#ifndef MALENA_NETWORKREQUEST_H
5#define MALENA_NETWORKREQUEST_H
11#include <unordered_map>
12#include <nlohmann/json.hpp>
93 const std::string& contentType =
"application/json");
110 return body(
json.dump(),
"application/json");
123 [[nodiscard]]
const std::string&
getUrl()
const {
return _url; }
124 [[nodiscard]]
const std::string&
getMethod()
const {
return _method; }
125 [[nodiscard]]
const std::string&
getBody()
const {
return _body; }
127 [[nodiscard]]
int getTimeout()
const {
return _timeoutSeconds; }
129 [[nodiscard]]
const std::unordered_map<std::string, std::string>&
134 std::string _method =
"GET";
136 std::string _contentType;
137 int _timeoutSeconds = 30;
139 std::unordered_map<std::string, std::string> _headers;
const std::string & getMethod() const
NetworkRequest & method(const std::string &m)
Override the HTTP method.
NetworkRequest(const std::string &url)
Construct a request for url.
NetworkRequest & body(const nlohmann::json &json)
Set the request body from a nlohmann::json value.
NetworkRequest & timeout(int seconds)
Set the request timeout in seconds. Default is 30 s.
NetworkRequest & header(const std::string &key, const std::string &value)
Add or replace a request header.
NetworkRequest & body(const std::string &data, const std::string &contentType="application/json")
Set the request body.
const std::string & getUrl() const
const std::string & getBody() const
NetworkRequest & basicAuth(const std::string &user, const std::string &pass)
Set HTTP Basic Authentication credentials.
const std::string & getContentType() const
NetworkRequest & bearerToken(const std::string &token)
Set the Authorization header to "Bearer <token>".
const std::unordered_map< std::string, std::string > & getHeaders() const
nlohmann::json json
Alias for nlohmann::json.