Kurlyk
Loading...
Searching...
No Matches
kurlyk::HttpRequestHandler Class Reference

Manages asynchronous HTTP requests, including handling responses, retries, and error processing. More...

#include <HttpRequestHandler.hpp>

Public Member Functions

 HttpRequestHandler (std::unique_ptr< HttpRequestContext > context)
 Constructs an HttpRequestHandler with the specified request context.
 
 ~HttpRequestHandler ()
 Destructor for HttpRequestHandler, handling cleanup of CURL and headers.
 
bool handle_curl_message (CURLMsg *message)
 Processes a CURL message and determines if a callback should be invoked.
 
CURL * get_curl () noexcept
 Retrieves the CURL handle associated with this request.
 
std::unique_ptr< HttpRequestContextget_request_context ()
 Returns the unique pointer to the HttpRequestContext object.
 
uint64_t get_request_id ()
 Retrieves the unique ID of the HTTP request.
 
void cancel ()
 Marks the request as cancelled.
 

Static Public Member Functions

static size_t write_http_response_body (char *data, size_t size, size_t nmemb, void *userdata)
 Processes the body data received from the server and appends it to the response content.
 
static size_t parse_http_response_header (char *buffer, size_t size, size_t nitems, void *userdata)
 Parses and stores response headers in the Headers container.
 

Private Member Functions

void init_curl ()
 Initializes CURL options for the request, setting headers, method, SSL, timeouts, and other parameters.
 
void fill_response_timings ()
 
void set_ssl_options (const HttpRequest &request)
 Sets SSL options such as cert, key, and CA file.
 
void set_request_options (const HttpRequest &request)
 Sets general options such as headers, cookies, and proxy.
 
void set_custom_headers (const HttpRequest &request)
 Appends custom headers to the request if provided.
 
void set_proxy_options (const HttpRequest &request)
 Configures proxy options if set in the request.
 
void set_cookie_options (const HttpRequest &request)
 Sets cookie options if cookies are specified in the request.
 
void set_request_body (const HttpRequest &request)
 Sets request body content for applicable HTTP methods.
 
const char * get_ca_file_path () const
 Gets the full path to the CA certificate file.
 

Private Attributes

std::unique_ptr< HttpRequestContextm_request_context
 Context for the current request.
 
std::unique_ptr< HttpResponsem_response
 Response object.
 
CURL * m_curl = nullptr
 CURL handle for the request.
 
struct curl_slist * m_headers = nullptr
 CURL headers list.
 
char m_error_buffer [CURL_ERROR_SIZE]
 Buffer for CURL error messages.
 
bool m_callback_called = false
 Indicates if the callback was called.
 
std::string m_ca_file
 Cached CA file path.
 

Detailed Description

Manages asynchronous HTTP requests, including handling responses, retries, and error processing.

Definition at line 12 of file HttpRequestHandler.hpp.

Constructor & Destructor Documentation

◆ HttpRequestHandler()

kurlyk::HttpRequestHandler::HttpRequestHandler ( std::unique_ptr< HttpRequestContext > context)
inlineexplicit

Constructs an HttpRequestHandler with the specified request context.

Parameters
contextUnique pointer to the HttpRequestContext object.

Definition at line 17 of file HttpRequestHandler.hpp.

◆ ~HttpRequestHandler()

kurlyk::HttpRequestHandler::~HttpRequestHandler ( )
inline

Destructor for HttpRequestHandler, handling cleanup of CURL and headers.

If the callback has not been called yet, this indicates the request was incomplete, and an error response is passed to the callback.

Definition at line 32 of file HttpRequestHandler.hpp.

Member Function Documentation

◆ cancel()

void kurlyk::HttpRequestHandler::cancel ( )
inline

Marks the request as cancelled.

Definition at line 128 of file HttpRequestHandler.hpp.

◆ fill_response_timings()

void kurlyk::HttpRequestHandler::fill_response_timings ( )
inlineprivate

Definition at line 175 of file HttpRequestHandler.hpp.

◆ get_ca_file_path()

const char * kurlyk::HttpRequestHandler::get_ca_file_path ( ) const
inlineprivate

Gets the full path to the CA certificate file.

Definition at line 283 of file HttpRequestHandler.hpp.

◆ get_curl()

CURL * kurlyk::HttpRequestHandler::get_curl ( )
inlinenoexcept

Retrieves the CURL handle associated with this request.

Returns
A pointer to the CURL handle used for this request, or nullptr if not initialized.

Definition at line 117 of file HttpRequestHandler.hpp.

◆ get_request_context()

std::unique_ptr< HttpRequestContext > kurlyk::HttpRequestHandler::get_request_context ( )
inline

Returns the unique pointer to the HttpRequestContext object.

Returns
A unique pointer to the HttpRequestContext object associated with this request.

Definition at line 121 of file HttpRequestHandler.hpp.

◆ get_request_id()

uint64_t kurlyk::HttpRequestHandler::get_request_id ( )
inline

Retrieves the unique ID of the HTTP request.

Returns
The unique ID of the HTTP request if the context exists, or 0 if no context is set.

Definition at line 125 of file HttpRequestHandler.hpp.

◆ handle_curl_message()

bool kurlyk::HttpRequestHandler::handle_curl_message ( CURLMsg * message)
inline

Processes a CURL message and determines if a callback should be invoked.

Definition at line 68 of file HttpRequestHandler.hpp.

◆ init_curl()

void kurlyk::HttpRequestHandler::init_curl ( )
inlineprivate

Initializes CURL options for the request, setting headers, method, SSL, timeouts, and other parameters.

Definition at line 150 of file HttpRequestHandler.hpp.

◆ parse_http_response_header()

static size_t kurlyk::HttpRequestHandler::parse_http_response_header ( char * buffer,
size_t size,
size_t nitems,
void * userdata )
inlinestatic

Parses and stores response headers in the Headers container.

Definition at line 56 of file HttpRequestHandler.hpp.

◆ set_cookie_options()

void kurlyk::HttpRequestHandler::set_cookie_options ( const HttpRequest & request)
inlineprivate

Sets cookie options if cookies are specified in the request.

Definition at line 258 of file HttpRequestHandler.hpp.

◆ set_custom_headers()

void kurlyk::HttpRequestHandler::set_custom_headers ( const HttpRequest & request)
inlineprivate

Appends custom headers to the request if provided.

Definition at line 223 of file HttpRequestHandler.hpp.

◆ set_proxy_options()

void kurlyk::HttpRequestHandler::set_proxy_options ( const HttpRequest & request)
inlineprivate

Configures proxy options if set in the request.

Definition at line 245 of file HttpRequestHandler.hpp.

◆ set_request_body()

void kurlyk::HttpRequestHandler::set_request_body ( const HttpRequest & request)
inlineprivate

Sets request body content for applicable HTTP methods.

Definition at line 271 of file HttpRequestHandler.hpp.

◆ set_request_options()

void kurlyk::HttpRequestHandler::set_request_options ( const HttpRequest & request)
inlineprivate

Sets general options such as headers, cookies, and proxy.

Definition at line 204 of file HttpRequestHandler.hpp.

◆ set_ssl_options()

void kurlyk::HttpRequestHandler::set_ssl_options ( const HttpRequest & request)
inlineprivate

Sets SSL options such as cert, key, and CA file.

Definition at line 185 of file HttpRequestHandler.hpp.

◆ write_http_response_body()

static size_t kurlyk::HttpRequestHandler::write_http_response_body ( char * data,
size_t size,
size_t nmemb,
void * userdata )
inlinestatic

Processes the body data received from the server and appends it to the response content.

Definition at line 46 of file HttpRequestHandler.hpp.

Member Data Documentation

◆ m_ca_file

std::string kurlyk::HttpRequestHandler::m_ca_file
mutableprivate

Cached CA file path.

Definition at line 147 of file HttpRequestHandler.hpp.

◆ m_callback_called

bool kurlyk::HttpRequestHandler::m_callback_called = false
private

Indicates if the callback was called.

Definition at line 146 of file HttpRequestHandler.hpp.

◆ m_curl

CURL* kurlyk::HttpRequestHandler::m_curl = nullptr
private

CURL handle for the request.

Definition at line 143 of file HttpRequestHandler.hpp.

◆ m_error_buffer

char kurlyk::HttpRequestHandler::m_error_buffer[CURL_ERROR_SIZE]
private

Buffer for CURL error messages.

Definition at line 145 of file HttpRequestHandler.hpp.

◆ m_headers

struct curl_slist* kurlyk::HttpRequestHandler::m_headers = nullptr
private

CURL headers list.

Definition at line 144 of file HttpRequestHandler.hpp.

◆ m_request_context

std::unique_ptr<HttpRequestContext> kurlyk::HttpRequestHandler::m_request_context
private

Context for the current request.

Definition at line 141 of file HttpRequestHandler.hpp.

◆ m_response

std::unique_ptr<HttpResponse> kurlyk::HttpRequestHandler::m_response
private

Response object.

Definition at line 142 of file HttpRequestHandler.hpp.


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