22#include "util/log/Logger.hpp"
23#include "util/requests/Types.hpp"
25#include <boost/asio/spawn.hpp>
26#include <boost/asio/ssl/context.hpp>
27#include <boost/beast.hpp>
28#include <boost/beast/core/error.hpp>
29#include <boost/beast/http/field.hpp>
30#include <boost/beast/http/message.hpp>
31#include <boost/beast/http/string_body.hpp>
32#include <boost/beast/http/verb.hpp>
40namespace util::requests {
50 boost::beast::http::request<boost::beast::http::string_body> request_;
77 addHeaders(std::vector<HttpHeader>
const& headers);
119 std::expected<std::string, RequestError>
120 getSsl(boost::asio::yield_context yield);
131 std::expected<std::string, RequestError>
132 getPlain(boost::asio::yield_context yield);
144 std::expected<std::string, RequestError>
145 get(boost::asio::yield_context yield);
156 std::expected<std::string, RequestError>
157 postSsl(boost::asio::yield_context yield);
168 std::expected<std::string, RequestError>
169 postPlain(boost::asio::yield_context yield);
181 std::expected<std::string, RequestError>
182 post(boost::asio::yield_context yield);
187 std::expected<std::string, RequestError>
188 doSslRequest(boost::asio::yield_context yield, boost::beast::http::verb method);
190 std::expected<std::string, RequestError>
191 doPlainRequest(boost::asio::yield_context yield, boost::beast::http::verb method);
193 std::expected<std::string, RequestError>
194 doRequest(boost::asio::yield_context yield, boost::beast::http::verb method);
196 template <
typename StreamDataType>
197 std::expected<std::string, RequestError>
198 doRequestImpl(StreamDataType&& streamData, boost::asio::yield_context yield, boost::beast::http::verb method);
A simple thread-safe logger for the channel specified in the constructor.
Definition Logger.hpp:110
Builder for HTTP requests.
Definition RequestBuilder.hpp:45
static constexpr std::chrono::milliseconds kDEFAULT_TIMEOUT
Definition RequestBuilder.hpp:184
RequestBuilder & addHeaders(std::vector< HttpHeader > const &headers)
Add headers to the request.
Definition RequestBuilder.cpp:71
std::expected< std::string, RequestError > get(boost::asio::yield_context yield)
Perform a GET request asynchronously. The SSL will be used first, if it fails, the plain connection w...
Definition RequestBuilder.cpp:113
std::expected< std::string, RequestError > postSsl(boost::asio::yield_context yield)
Perform a POST request with SSL asynchronously.
Definition RequestBuilder.cpp:119
RequestBuilder & addHeader(HttpHeader const &header)
Add a header to the request.
Definition RequestBuilder.cpp:64
std::expected< std::string, RequestError > postPlain(boost::asio::yield_context yield)
Perform a POST request without SSL asynchronously.
Definition RequestBuilder.cpp:125
std::expected< std::string, RequestError > getPlain(boost::asio::yield_context yield)
Perform a GET request without SSL asynchronously.
Definition RequestBuilder.cpp:107
std::expected< std::string, RequestError > getSsl(boost::asio::yield_context yield)
Perform a GET request with SSL asynchronously.
Definition RequestBuilder.cpp:101
RequestBuilder(std::string host, std::string port)
Construct a new Request Builder object.
Definition RequestBuilder.cpp:57
std::expected< std::string, RequestError > post(boost::asio::yield_context yield)
Perform a POST request asynchronously. The SSL will be used first, if it fails, the plain connection ...
Definition RequestBuilder.cpp:131
RequestBuilder & addData(std::string data)
Add body or data to the request.
Definition RequestBuilder.cpp:79
RequestBuilder & setTimeout(std::chrono::milliseconds timeout)
Set the timeout for the request.
Definition RequestBuilder.cpp:87
RequestBuilder & setTarget(std::string_view target)
Set the target for the request.
Definition RequestBuilder.cpp:94
This namespace implements the data access layer and related components.
Definition AmendmentCenter.cpp:70