Clio develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
util::requests::RequestBuilder Class Reference

Builder for HTTP requests. More...

#include <RequestBuilder.hpp>

Public Member Functions

 RequestBuilder (std::string host, std::string port)
 Construct a new Request Builder object.
 
RequestBuilderaddHeader (HttpHeader const &header)
 Add a header to the request.
 
RequestBuilderaddHeaders (std::vector< HttpHeader > const &headers)
 Add headers to the request.
 
RequestBuilderaddData (std::string data)
 Add body or data to the request.
 
RequestBuildersetTimeout (std::chrono::milliseconds timeout)
 Set the timeout for the request.
 
RequestBuildersetTarget (std::string_view target)
 Set the target for the request.
 
std::expected< std::string, RequestErrorgetSsl (boost::asio::yield_context yield)
 Perform a GET request with SSL asynchronously.
 
std::expected< std::string, RequestErrorgetPlain (boost::asio::yield_context yield)
 Perform a GET request without SSL asynchronously.
 
std::expected< std::string, RequestErrorget (boost::asio::yield_context yield)
 Perform a GET request asynchronously. The SSL will be used first, if it fails, the plain connection will be used.
 
std::expected< std::string, RequestErrorpostSsl (boost::asio::yield_context yield)
 Perform a POST request with SSL asynchronously.
 
std::expected< std::string, RequestErrorpostPlain (boost::asio::yield_context yield)
 Perform a POST request without SSL asynchronously.
 
std::expected< std::string, RequestErrorpost (boost::asio::yield_context yield)
 Perform a POST request asynchronously. The SSL will be used first, if it fails, the plain connection will be used.
 
template<typename StreamDataType >
std::expected< std::string, RequestErrordoRequestImpl (StreamDataType &&streamData, asio::yield_context yield, http::verb const method)
 Perform a request asynchronously.
 

Static Public Attributes

static constexpr std::chrono::milliseconds kDEFAULT_TIMEOUT {30000}
 

Detailed Description

Builder for HTTP requests.

Constructor & Destructor Documentation

◆ RequestBuilder()

util::requests::RequestBuilder::RequestBuilder ( std::string host,
std::string port )

Construct a new Request Builder object.

Parameters
hosthost to connect to
portport to connect to

Member Function Documentation

◆ addData()

RequestBuilder & util::requests::RequestBuilder::addData ( std::string data)

Add body or data to the request.

Parameters
datadata to add
Returns
Reference to itself

◆ addHeader()

RequestBuilder & util::requests::RequestBuilder::addHeader ( HttpHeader const & header)

Add a header to the request.

Parameters
headerheader to add
Returns
Reference to itself

◆ addHeaders()

RequestBuilder & util::requests::RequestBuilder::addHeaders ( std::vector< HttpHeader > const & headers)

Add headers to the request.

Parameters
headersheaders to add
Returns
Reference to itself

◆ doRequestImpl()

template<typename StreamDataType >
std::expected< std::string, RequestError > util::requests::RequestBuilder::doRequestImpl ( StreamDataType && streamData,
asio::yield_context yield,
http::verb const method )

Perform a request asynchronously.

Template Parameters
StreamDataTypeThe type of the stream data
Parameters
streamDataThe stream data
yieldThe coroutine context
methodThe HTTP method to use
Returns
Response or error

◆ get()

std::expected< std::string, RequestError > util::requests::RequestBuilder::get ( boost::asio::yield_context yield)

Perform a GET request asynchronously. The SSL will be used first, if it fails, the plain connection will be used.

Note
It is not thread-safe to call get() and post() of the same RequestBuilder from multiple threads. But it is fine to call only get() or only post() of the same RequestBuilder from multiple threads.
Parameters
yieldyield context
Returns
Expected response or error

◆ getPlain()

std::expected< std::string, RequestError > util::requests::RequestBuilder::getPlain ( boost::asio::yield_context yield)

Perform a GET request without SSL asynchronously.

Note
It is not thread-safe to call get() and post() of the same RequestBuilder from multiple threads. But it is fine to call only get() or only post() of the same RequestBuilder from multiple threads.
Parameters
yieldyield context
Returns
Expected response or error

◆ getSsl()

std::expected< std::string, RequestError > util::requests::RequestBuilder::getSsl ( boost::asio::yield_context yield)

Perform a GET request with SSL asynchronously.

Note
It is not thread-safe to call get() and post() of the same RequestBuilder from multiple threads. But it is fine to call only get() or only post() of the same RequestBuilder from multiple threads.
Parameters
yieldyield context
Returns
Expected response or error

◆ post()

std::expected< std::string, RequestError > util::requests::RequestBuilder::post ( boost::asio::yield_context yield)

Perform a POST request asynchronously. The SSL will be used first, if it fails, the plain connection will be used.

Note
It is not thread-safe to call get() and post() of the same RequestBuilder from multiple threads. But it is fine to call only get() or only post() of the same RequestBuilder from multiple threads.
Parameters
yieldyield context
Returns
Expected response or error

◆ postPlain()

std::expected< std::string, RequestError > util::requests::RequestBuilder::postPlain ( boost::asio::yield_context yield)

Perform a POST request without SSL asynchronously.

Note
It is not thread-safe to call get() and post() of the same RequestBuilder from multiple threads. But it is fine to call only get() or only post() of the same RequestBuilder from multiple threads.
Parameters
yieldyield context
Returns
Expected response or error

◆ postSsl()

std::expected< std::string, RequestError > util::requests::RequestBuilder::postSsl ( boost::asio::yield_context yield)

Perform a POST request with SSL asynchronously.

Note
It is not thread-safe to call get() and post() of the same RequestBuilder from multiple threads. But it is fine to call only get() or only post() of the same RequestBuilder from multiple threads.
Parameters
yieldyield context
Returns
Expected response or error

◆ setTarget()

RequestBuilder & util::requests::RequestBuilder::setTarget ( std::string_view target)

Set the target for the request.

Note
Default target is "/"
Parameters
targettarget to set
Returns
Reference to itself

◆ setTimeout()

RequestBuilder & util::requests::RequestBuilder::setTimeout ( std::chrono::milliseconds timeout)

Set the timeout for the request.

Note
Default timeout is defined in DEFAULT_TIMEOUT
Parameters
timeouttimeout to set
Returns
Reference to itself

Member Data Documentation

◆ kDEFAULT_TIMEOUT

std::chrono::milliseconds util::requests::RequestBuilder::kDEFAULT_TIMEOUT {30000}
staticconstexpr

Default timeout for requests


The documentation for this class was generated from the following files: