D++ (DPP)
C++ Discord API Bot Library
dpp::http_request Class Reference

A HTTP request. More...

+ Collaboration diagram for dpp::http_request:

Public Member Functions

 http_request (std::string_view _endpoint, std::string_view _parameters, http_completion_event completion, std::string_view _postdata="", http_method method=m_get, std::string_view audit_reason="", std::string_view filename="", std::string_view filecontent="", std::string_view filemimetype="", std::string_view http_protocol="1.1")
 Constructor. When constructing one of these objects it should be passed to request_queue::post_request(). More...
 
 http_request (std::string_view _endpoint, std::string_view _parameters, http_completion_event completion, std::string_view _postdata="", http_method method=m_get, std::string_view audit_reason="", const std::vector< std::string > &filename={}, const std::vector< std::string > &filecontent={}, const std::vector< std::string > &filemimetypes={}, std::string_view http_protocol="1.1")
 Constructor. When constructing one of these objects it should be passed to request_queue::post_request(). More...
 
 http_request (std::string_view _url, http_completion_event completion, http_method method=m_get, std::string_view _postdata="", std::string_view _mimetype="text/plain", const std::multimap< std::string, std::string > &_headers={}, std::string_view http_protocol="1.1")
 Constructor. When constructing one of these objects it should be passed to request_queue::post_request(). More...
 
 ~http_request ()
 Destroy the http request object. More...
 
void complete (const http_request_completion_t &c)
 Call the completion callback, if the request is complete. More...
 
http_request_completion_t run (class cluster *owner)
 Execute the HTTP request and mark the request complete. More...
 
bool is_completed ()
 Returns true if the request is complete. More...
 

Public Attributes

std::string endpoint
 Endpoint name e.g. /api/users. More...
 
std::string parameters
 Major and minor parameters. More...
 
std::string postdata
 Postdata for POST and PUT. More...
 
http_method method
 HTTP method for request. More...
 
std::string reason
 Audit log reason for Discord requests, if non-empty. More...
 
std::vector< std::string > file_name
 Upload file name (server side). More...
 
std::vector< std::string > file_content
 Upload file contents (binary). More...
 
std::vector< std::string > file_mimetypes
 Upload file mime types. application/octet-stream if unspecified. More...
 
std::string mimetype
 Request mime type. More...
 
std::multimap< std::string, std::string > req_headers
 Request headers (non-discord requests only). More...
 
bool waiting
 Waiting for rate limit to expire. More...
 
std::string protocol
 HTTP protocol. More...
 

Detailed Description

A HTTP request.

You should instantiate one of these objects via its constructor, and pass a pointer to it into an instance of request_queue. Although you can directly call the run() method of the object and it will make a HTTP call, be aware that if you do this, it will be a BLOCKING call (not asynchronous) and will not respect rate limits, as both of these functions are managed by the request_queue class.

Constructor & Destructor Documentation

◆ http_request() [1/3]

dpp::http_request::http_request ( std::string_view  _endpoint,
std::string_view  _parameters,
http_completion_event  completion,
std::string_view  _postdata = "",
http_method  method = m_get,
std::string_view  audit_reason = "",
std::string_view  filename = "",
std::string_view  filecontent = "",
std::string_view  filemimetype = "",
std::string_view  http_protocol = "1.1" 
)

Constructor. When constructing one of these objects it should be passed to request_queue::post_request().

Parameters
_endpointThe API endpoint, e.g. /api/guilds
_parametersMajor and minor parameters for the endpoint e.g. a user id or guild id
completioncompletion event to call when done
_postdataData to send in POST and PUT requests
methodThe HTTP method to use from dpp::http_method
audit_reasonAudit log reason to send, empty to send none
filenameThe filename (server side) of any uploaded file
filecontentThe binary content of any uploaded file for the request
filemimetypeThe MIME type of any uploaded file for the request
http_protocolHTTP protocol

◆ http_request() [2/3]

dpp::http_request::http_request ( std::string_view  _endpoint,
std::string_view  _parameters,
http_completion_event  completion,
std::string_view  _postdata = "",
http_method  method = m_get,
std::string_view  audit_reason = "",
const std::vector< std::string > &  filename = {},
const std::vector< std::string > &  filecontent = {},
const std::vector< std::string > &  filemimetypes = {},
std::string_view  http_protocol = "1.1" 
)

Constructor. When constructing one of these objects it should be passed to request_queue::post_request().

Parameters
_endpointThe API endpoint, e.g. /api/guilds
_parametersMajor and minor parameters for the endpoint e.g. a user id or guild id
completioncompletion event to call when done
_postdataData to send in POST and PUT requests
methodThe HTTP method to use from dpp::http_method
audit_reasonAudit log reason to send, empty to send none
filenameThe filename (server side) of any uploaded file
filecontentThe binary content of any uploaded file for the request
filemimetypesThe MIME type of any uploaded file for the request
http_protocolHTTP protocol

◆ http_request() [3/3]

dpp::http_request::http_request ( std::string_view  _url,
http_completion_event  completion,
http_method  method = m_get,
std::string_view  _postdata = "",
std::string_view  _mimetype = "text/plain",
const std::multimap< std::string, std::string > &  _headers = {},
std::string_view  http_protocol = "1.1" 
)

Constructor. When constructing one of these objects it should be passed to request_queue::post_request().

Parameters
_urlRaw HTTP url
completioncompletion event to call when done
methodThe HTTP method to use from dpp::http_method
_postdataData to send in POST and PUT requests
_mimetypePOST data mime type
_headersHTTP headers to send
http_protocolHTTP protocol

◆ ~http_request()

dpp::http_request::~http_request ( )

Destroy the http request object.

Member Function Documentation

◆ complete()

void dpp::http_request::complete ( const http_request_completion_t c)

Call the completion callback, if the request is complete.

Parameters
ccallback to call

◆ is_completed()

bool dpp::http_request::is_completed ( )

Returns true if the request is complete.

◆ run()

http_request_completion_t dpp::http_request::run ( class cluster owner)

Execute the HTTP request and mark the request complete.

Parameters
ownercreating cluster

Member Data Documentation

◆ endpoint

std::string dpp::http_request::endpoint

Endpoint name e.g. /api/users.

◆ file_content

std::vector<std::string> dpp::http_request::file_content

Upload file contents (binary).

◆ file_mimetypes

std::vector<std::string> dpp::http_request::file_mimetypes

Upload file mime types. application/octet-stream if unspecified.

◆ file_name

std::vector<std::string> dpp::http_request::file_name

Upload file name (server side).

◆ method

http_method dpp::http_request::method

HTTP method for request.

◆ mimetype

std::string dpp::http_request::mimetype

Request mime type.

◆ parameters

std::string dpp::http_request::parameters

Major and minor parameters.

◆ postdata

std::string dpp::http_request::postdata

Postdata for POST and PUT.

◆ protocol

std::string dpp::http_request::protocol

HTTP protocol.

◆ reason

std::string dpp::http_request::reason

Audit log reason for Discord requests, if non-empty.

◆ req_headers

std::multimap<std::string, std::string> dpp::http_request::req_headers

Request headers (non-discord requests only).

◆ waiting

bool dpp::http_request::waiting

Waiting for rate limit to expire.

D++ Library version 9.0.13D++ Library version 9.0.12D++ Library version 9.0.11D++ Library version 9.0.10D++ Library version 9.0.9D++ Library version 9.0.8D++ Library version 9.0.7D++ Library version 9.0.6D++ Library version 9.0.5D++ Library version 9.0.4D++ Library version 9.0.3D++ Library version 9.0.2D++ Library version 9.0.1D++ Library version 9.0.0D++ Library version 1.0.2D++ Library version 1.0.1D++ Library version 1.0.0