Kurlyk
Loading...
Searching...
No Matches
kurlyk Namespace Reference

Primary namespace for the Kurlyk library, encompassing initialization, request management, and utility functions. More...

Namespaces

namespace  core
 
namespace  startup
 
namespace  utils
 

Classes

class  BaseWebSocketClient
 Base class implementing core functionality for WebSocket clients, managing events, states, and message sending. More...
 
class  Cookie
 Represents an HTTP cookie. More...
 
class  EmscriptenWebSocketClientAdapter
 A WebSocket client implementation using the Emscripten API. More...
 
class  HttpBatchRequestHandler
 Handles multiple asynchronous HTTP requests using libcurl's multi interface. More...
 
class  HttpClient
 A client class for making HTTP requests to a specific host. More...
 
class  HttpRateLimiter
 Manages rate limits for HTTP requests, ensuring compliance with set limits. More...
 
class  HttpRequest
 Represents an HTTP request. More...
 
class  HttpRequestContext
 Represents the context of an HTTP request, including the request object, callback function, retry attempts, and timing. More...
 
class  HttpRequestHandler
 Manages asynchronous HTTP requests, including handling responses, retries, and error processing. More...
 
class  HttpRequestManager
 Manages and processes HTTP requests using a singleton pattern. More...
 
class  HttpResponse
 Represents the response received from an HTTP request, including headers, content, and status. More...
 
class  IWebSocketClient
 Interface for a WebSocket client, providing methods for connection management, configuration, and event handling. More...
 
class  IWebSocketSender
 Interface for a WebSocket sender, offering methods to send messages, close connections, and check connection status. More...
 
class  SimpleWebSocketClientAdapter
 A WebSocket client adapter that leverages the Simple WebSocket Server library for managing WebSocket connections. More...
 
class  SimpleWebSocketWorker
 Singleton worker that manages asynchronous WebSocket operations. More...
 
class  WebSocketClient
 Provides an interface for managing WebSocket connections, including configuration, event handling, and message sending. More...
 
class  WebSocketConfig
 Configuration parameters for establishing and managing WebSocket connections. More...
 
class  WebSocketEventData
 Encapsulates data for a WebSocket event, providing information about event type, message, status, and errors. More...
 
class  WebSocketManager
 Manages WebSocket client instances, providing centralized control for processing, resetting, and lifecycle management. More...
 
class  WebSocketRateLimiter
 Manages rate limiting for WebSocket requests based on predefined limits. More...
 
class  WebSocketSendInfo
 Holds information for sending a WebSocket message, including rate limiting, close status, and a callback. More...
 

Typedefs

using HttpRequestPtr = std::unique_ptr<HttpRequest>
 A unique pointer to an HttpRequest object for memory management.
 
using HttpResponsePtr = std::unique_ptr<HttpResponse>
 A unique pointer to an HttpResponse object for memory management.
 
using HttpResponseCallback = std::function<void(HttpResponsePtr response)>
 Type definition for the callback function used to handle HTTP responses.
 
using Headers = utils::CaseInsensitiveMultimap
 Alias for HTTP headers, providing a case-insensitive unordered multimap.
 
using QueryParams = utils::CaseInsensitiveMultimap
 Alias for query parameters in HTTP requests, stored case-insensitively.
 
using Cookies = utils::CaseInsensitiveCookieMultimap
 Alias for HTTP cookies, stored case-insensitively.
 
using WebSocketClientPtr = std::shared_ptr<IWebSocketClient>
 Alias for a shared pointer to an IWebSocketClient instance.
 
using WebSocketSenderPtr = std::shared_ptr<IWebSocketSender>
 Alias for a shared pointer to an IWebSocketSender instance.
 

Enumerations

enum class  ProxyType {
  PROXY_HTTP = 0 , PROXY_HTTPS , PROXY_HTTP_1_0 , PROXY_SOCKS4 ,
  PROXY_SOCKS4A , PROXY_SOCKS5 , PROXY_SOCKS5_HOSTNAME
}
 Enumeration of supported proxy types compatible with libcurl. More...
 
enum class  RateLimitType { RL_GENERAL , RL_SPECIFIC }
 Defines rate limit scope categories. More...
 
enum class  WebSocketEventType { WS_OPEN , WS_MESSAGE , WS_CLOSE , WS_ERROR }
 Types of WebSocket events. More...
 

Functions

long create_rate_limit (long requests_per_period, long period_ms)
 Creates a rate limit with specified parameters.
 
long create_rate_limit_rpm (long requests_per_minute)
 Creates a rate limit based on Requests Per Minute (RPM).
 
long create_rate_limit_rps (long requests_per_second)
 Creates a rate limit based on Requests Per Second (RPS).
 
bool remove_limit (long limit_id)
 Removes an existing rate limit with the specified identifier.
 
uint64_t generate_request_id ()
 Generates a new unique request ID.
 
void cancel_request_by_id (uint64_t request_id, std::function< void()> callback)
 Cancels a request by its unique identifier.
 
std::future< void > cancel_request_by_id (uint64_t request_id)
 Cancels a request by its unique identifier and returns a future.
 
bool http_request (std::unique_ptr< HttpRequest > request_ptr, HttpResponseCallback callback)
 Sends an HTTP request with callback.
 
std::future< HttpResponsePtrhttp_request (std::unique_ptr< HttpRequest > request_ptr)
 Sends an HTTP request asynchronously and returns a future with the response.
 
uint64_t http_request (const std::string &method, const std::string &url, const QueryParams &query, const Headers &headers, const std::string &content, HttpResponseCallback callback)
 Sends an HTTP request with detailed parameters and a callback.
 
std::pair< uint64_t, std::future< HttpResponsePtr > > http_request (const std::string &method, const std::string &url, const QueryParams &query, const Headers &headers, const std::string &content)
 Sends an HTTP request asynchronously with detailed parameters and returns a future.
 
uint64_t http_request (const std::string &method, const std::string &host, const std::string &path, const QueryParams &query, const Headers &headers, const std::string &content, HttpResponseCallback callback)
 Sends an HTTP request with a specified host, path, and callback.
 
uint64_t http_get (const std::string &url, const QueryParams &query, const Headers &headers, HttpResponseCallback callback)
 Sends an asynchronous HTTP GET request with a callback.
 
std::pair< uint64_t, std::future< HttpResponsePtr > > http_get (const std::string &url, const QueryParams &query, const Headers &headers)
 Sends an asynchronous HTTP GET request and returns a future with the response.
 
uint64_t http_post (const std::string &url, const QueryParams &query, const Headers &headers, const std::string &content, HttpResponseCallback callback)
 Sends an asynchronous HTTP POST request with a callback.
 
std::pair< uint64_t, std::future< HttpResponsePtr > > http_post (const std::string &url, const QueryParams &query, const Headers &headers, const std::string &content)
 Sends an asynchronous HTTP POST request and returns a future with the response.
 
void init (const bool use_async=true)
 Initializes the Kurlyk library, setting up necessary managers and the network worker.
 
void deinit ()
 Deinitializes the Kurlyk library, stopping the network worker and releasing resources.
 
void process ()
 Processes pending requests (used in synchronous mode).
 
void shutdown ()
 Shuts down all network operations, resetting the state of the network worker and clearing pending requests.
 
void add_error_handler (::kurlyk::core::NetworkWorker::ErrorHandler handler)
 Registers a global error handler for the network worker.
 
const std::string & to_str (ProxyType value) noexcept
 Converts a ProxyType enum value to its string representation.
 
const std::string & to_str (RateLimitType value) noexcept
 Converts a RateLimitType enum value to its string representation.
 
const std::string & to_str (WebSocketEventType value) noexcept
 Converts a WebSocketEventType enum value to its string representation.
 
template<typename T>
to_enum (const std::string &str)
 Template specialization to convert string to enum value.
 
template<>
ProxyType to_enum< ProxyType > (const std::string &str)
 
template<>
RateLimitType to_enum< RateLimitType > (const std::string &str)
 
template<>
WebSocketEventType to_enum< WebSocketEventType > (const std::string &str)
 
std::ostream & operator<< (std::ostream &os, ProxyType type)
 
std::ostream & operator<< (std::ostream &os, RateLimitType type)
 
std::ostream & operator<< (std::ostream &os, WebSocketEventType type)
 

Detailed Description

Primary namespace for the Kurlyk library, encompassing initialization, request management, and utility functions.

Typedef Documentation

◆ Cookies

Alias for HTTP cookies, stored case-insensitively.

Definition at line 68 of file CaseInsensitiveMultimap.hpp.

◆ Headers

Alias for HTTP headers, providing a case-insensitive unordered multimap.

Definition at line 62 of file CaseInsensitiveMultimap.hpp.

◆ HttpRequestPtr

using kurlyk::HttpRequestPtr = std::unique_ptr<HttpRequest>

A unique pointer to an HttpRequest object for memory management.

Definition at line 283 of file HttpRequest.hpp.

◆ HttpResponseCallback

using kurlyk::HttpResponseCallback = std::function<void(HttpResponsePtr response)>

Type definition for the callback function used to handle HTTP responses.

Parameters
responseA pointer to the HttpResponse object.

Definition at line 36 of file HttpResponse.hpp.

◆ HttpResponsePtr

using kurlyk::HttpResponsePtr = std::unique_ptr<HttpResponse>

A unique pointer to an HttpResponse object for memory management.

Definition at line 32 of file HttpResponse.hpp.

◆ QueryParams

Alias for query parameters in HTTP requests, stored case-insensitively.

Definition at line 65 of file CaseInsensitiveMultimap.hpp.

◆ WebSocketClientPtr

using kurlyk::WebSocketClientPtr = std::shared_ptr<IWebSocketClient>

Alias for a shared pointer to an IWebSocketClient instance.

Definition at line 79 of file IWebSocketClient.hpp.

◆ WebSocketSenderPtr

using kurlyk::WebSocketSenderPtr = std::shared_ptr<IWebSocketSender>

Alias for a shared pointer to an IWebSocketSender instance.

Definition at line 60 of file IWebSocketSender.hpp.

Enumeration Type Documentation

◆ ProxyType

enum class kurlyk::ProxyType
strong

Enumeration of supported proxy types compatible with libcurl.

Enumerator
PROXY_HTTP 

HTTP proxy.

PROXY_HTTPS 

HTTPS proxy.

PROXY_HTTP_1_0 

HTTP/1.0 proxy.

PROXY_SOCKS4 

SOCKS4 proxy.

PROXY_SOCKS4A 

SOCKS4A proxy.

PROXY_SOCKS5 

SOCKS5 proxy.

PROXY_SOCKS5_HOSTNAME 

SOCKS5 proxy with hostname resolution.

Definition at line 12 of file enums.hpp.

◆ RateLimitType

enum class kurlyk::RateLimitType
strong

Defines rate limit scope categories.

Enumerator
RL_GENERAL 

Applies globally to all requests.

RL_SPECIFIC 

Applies to specific client/request.

Definition at line 24 of file enums.hpp.

◆ WebSocketEventType

enum class kurlyk::WebSocketEventType
strong

Types of WebSocket events.

Enumerator
WS_OPEN 

Connection established.

WS_MESSAGE 

Message received.

WS_CLOSE 

Connection closed.

WS_ERROR 

Error occurred.

Definition at line 31 of file enums.hpp.

Function Documentation

◆ add_error_handler()

void kurlyk::add_error_handler ( ::kurlyk::core::NetworkWorker::ErrorHandler handler)
inline

Registers a global error handler for the network worker.

Parameters
handlerCallback invoked when an error is reported.

Definition at line 44 of file runtime.hpp.

◆ cancel_request_by_id() [1/2]

std::future< void > kurlyk::cancel_request_by_id ( uint64_t request_id)

Cancels a request by its unique identifier and returns a future.

Parameters
request_idThe unique identifier of the request to cancel.
Returns
A std::future<void> that becomes ready when the cancellation process is complete.

Definition at line 58 of file utils.hpp.

◆ cancel_request_by_id() [2/2]

void kurlyk::cancel_request_by_id ( uint64_t request_id,
std::function< void()> callback )

Cancels a request by its unique identifier.

Parameters
request_idThe unique identifier of the request to cancel.
callbackAn optional callback function to execute after cancellation.

Definition at line 50 of file utils.hpp.

◆ create_rate_limit()

long kurlyk::create_rate_limit ( long requests_per_period,
long period_ms )

Creates a rate limit with specified parameters.

Parameters
requests_per_periodMaximum number of requests allowed within the specified period.
period_msTime period in milliseconds for the rate limit.
Returns
A unique identifier for the created rate limit.

Definition at line 14 of file utils.hpp.

◆ create_rate_limit_rpm()

long kurlyk::create_rate_limit_rpm ( long requests_per_minute)

Creates a rate limit based on Requests Per Minute (RPM).

Parameters
requests_per_minuteMaximum number of requests allowed per minute.
Returns
A unique identifier for the created rate limit.

Definition at line 21 of file utils.hpp.

◆ create_rate_limit_rps()

long kurlyk::create_rate_limit_rps ( long requests_per_second)

Creates a rate limit based on Requests Per Second (RPS).

Parameters
requests_per_secondMaximum number of requests allowed per second.
Returns
A unique identifier for the created rate limit.

Definition at line 29 of file utils.hpp.

◆ deinit()

void kurlyk::deinit ( )
inline

Deinitializes the Kurlyk library, stopping the network worker and releasing resources.

Call this function to clean up resources before exiting the application.

Definition at line 26 of file runtime.hpp.

◆ generate_request_id()

uint64_t kurlyk::generate_request_id ( )

Generates a new unique request ID.

Returns
A new unique request ID.

Definition at line 43 of file utils.hpp.

◆ http_get() [1/2]

std::pair< uint64_t, std::future< HttpResponsePtr > > kurlyk::http_get ( const std::string & url,
const QueryParams & query,
const Headers & headers )

Sends an asynchronous HTTP GET request and returns a future with the response.

Parameters
urlThe full request URL.
queryQuery parameters for the GET request.
headersHTTP headers to include.
Returns
A pair containing the unique request ID and a future with the response details.

Definition at line 273 of file utils.hpp.

◆ http_get() [2/2]

uint64_t kurlyk::http_get ( const std::string & url,
const QueryParams & query,
const Headers & headers,
HttpResponseCallback callback )

Sends an asynchronous HTTP GET request with a callback.

Parameters
urlThe full request URL.
queryQuery parameters for the GET request.
headersHTTP headers to include.
callbackCallback function to be executed upon request completion.
Returns
The unique identifier of the HTTP request if successfully added, or 0 on failure.

Definition at line 260 of file utils.hpp.

◆ http_post() [1/2]

std::pair< uint64_t, std::future< HttpResponsePtr > > kurlyk::http_post ( const std::string & url,
const QueryParams & query,
const Headers & headers,
const std::string & content )

Sends an asynchronous HTTP POST request and returns a future with the response.

Parameters
urlThe full request URL.
queryQuery parameters for the POST request.
headersHTTP headers to include.
contentThe body content for the POST request.
Returns
A pair containing the unique request ID and a future with the response details.

Definition at line 343 of file utils.hpp.

◆ http_post() [2/2]

uint64_t kurlyk::http_post ( const std::string & url,
const QueryParams & query,
const Headers & headers,
const std::string & content,
HttpResponseCallback callback )

Sends an asynchronous HTTP POST request with a callback.

Parameters
urlThe full request URL.
queryQuery parameters for the POST request.
headersHTTP headers to include.
contentThe body content for the POST request.
callbackCallback function to be executed upon request completion.
Returns
The unique identifier of the HTTP request if successfully added, or 0 on failure.

Definition at line 328 of file utils.hpp.

◆ http_request() [1/5]

uint64_t kurlyk::http_request ( const std::string & method,
const std::string & host,
const std::string & path,
const QueryParams & query,
const Headers & headers,
const std::string & content,
HttpResponseCallback callback )

Sends an HTTP request with a specified host, path, and callback.

Parameters
methodHTTP method (e.g., "GET", "POST").
hostHost name or IP address.
pathURL path for the request.
queryQuery parameters for the request.
headersHTTP headers to include.
contentThe body content for POST requests.
callbackCallback function to be executed upon request completion.
Returns
The unique identifier of the HTTP request if successfully added, or 0 on failure.

Definition at line 229 of file utils.hpp.

◆ http_request() [2/5]

std::pair< uint64_t, std::future< HttpResponsePtr > > kurlyk::http_request ( const std::string & method,
const std::string & url,
const QueryParams & query,
const Headers & headers,
const std::string & content )

Sends an HTTP request asynchronously with detailed parameters and returns a future.

Parameters
methodHTTP method (e.g., "GET", "POST").
urlThe full request URL.
queryQuery parameters for the request.
headersHTTP headers to include.
contentThe body content for POST requests.
Returns
A pair containing the unique request ID and a future with the response details.

Definition at line 169 of file utils.hpp.

◆ http_request() [3/5]

uint64_t kurlyk::http_request ( const std::string & method,
const std::string & url,
const QueryParams & query,
const Headers & headers,
const std::string & content,
HttpResponseCallback callback )

Sends an HTTP request with detailed parameters and a callback.

Parameters
methodHTTP method (e.g., "GET", "POST").
urlThe full request URL.
queryQuery parameters for the request.
headersHTTP headers to include.
contentThe body content for POST requests.
callbackCallback function to be executed upon request completion.
Returns
The unique identifier of the HTTP request if successfully added, or 0 on failure.

Definition at line 139 of file utils.hpp.

◆ http_request() [4/5]

std::future< HttpResponsePtr > kurlyk::http_request ( std::unique_ptr< HttpRequest > request_ptr)

Sends an HTTP request asynchronously and returns a future with the response.

Parameters
request_ptrThe HTTP request object with the request details.
Returns
A future containing the HttpResponsePtr with the response details.

Definition at line 95 of file utils.hpp.

◆ http_request() [5/5]

bool kurlyk::http_request ( std::unique_ptr< HttpRequest > request_ptr,
HttpResponseCallback callback )

Sends an HTTP request with callback.

Parameters
request_ptrThe HTTP request object with the request details.
callbackThe callback function to be called upon request completion.
Returns
True if the request was successfully added to the manager, false otherwise.

Definition at line 84 of file utils.hpp.

◆ init()

void kurlyk::init ( const bool use_async = true)
inline

Initializes the Kurlyk library, setting up necessary managers and the network worker.

Parameters
use_asyncIf true, enables asynchronous processing for requests. Call this function before using the library to ensure all components are initialized.

Definition at line 13 of file runtime.hpp.

◆ operator<<() [1/3]

std::ostream & kurlyk::operator<< ( std::ostream & os,
ProxyType type )
inline

Definition at line 79 of file type_utils.hpp.

◆ operator<<() [2/3]

std::ostream & kurlyk::operator<< ( std::ostream & os,
RateLimitType type )
inline

Definition at line 83 of file type_utils.hpp.

◆ operator<<() [3/3]

std::ostream & kurlyk::operator<< ( std::ostream & os,
WebSocketEventType type )
inline

Definition at line 87 of file type_utils.hpp.

◆ process()

void kurlyk::process ( )
inline

Processes pending requests (used in synchronous mode).

This function should be called periodically if the library is used in synchronous mode.

Definition at line 32 of file runtime.hpp.

◆ remove_limit()

bool kurlyk::remove_limit ( long limit_id)

Removes an existing rate limit with the specified identifier.

Parameters
limit_idThe unique identifier of the rate limit to be removed.
Returns
True if the rate limit was successfully removed, or false if the rate limit ID was not found.

Definition at line 37 of file utils.hpp.

◆ shutdown()

void kurlyk::shutdown ( )
inline

Shuts down all network operations, resetting the state of the network worker and clearing pending requests.

Use this function to stop all network operations and prepare the library for shutdown.

Definition at line 38 of file runtime.hpp.

◆ to_enum()

template<typename T>
T kurlyk::to_enum ( const std::string & str)

Template specialization to convert string to enum value.

◆ to_enum< ProxyType >()

template<>
ProxyType kurlyk::to_enum< ProxyType > ( const std::string & str)
inline

Definition at line 40 of file type_utils.hpp.

◆ to_enum< RateLimitType >()

template<>
RateLimitType kurlyk::to_enum< RateLimitType > ( const std::string & str)
inline

Definition at line 56 of file type_utils.hpp.

◆ to_enum< WebSocketEventType >()

template<>
WebSocketEventType kurlyk::to_enum< WebSocketEventType > ( const std::string & str)
inline

Definition at line 67 of file type_utils.hpp.

◆ to_str() [1/3]

const std::string & kurlyk::to_str ( ProxyType value)
inlinenoexcept

Converts a ProxyType enum value to its string representation.

Definition at line 11 of file type_utils.hpp.

◆ to_str() [2/3]

const std::string & kurlyk::to_str ( RateLimitType value)
inlinenoexcept

Converts a RateLimitType enum value to its string representation.

Definition at line 20 of file type_utils.hpp.

◆ to_str() [3/3]

const std::string & kurlyk::to_str ( WebSocketEventType value)
inlinenoexcept

Converts a WebSocketEventType enum value to its string representation.

Definition at line 28 of file type_utils.hpp.