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

A HTTP request. More...

#include <queues.h>

+ Collaboration diagram for dpp::http_request:

Public Member Functions

 http_request (const std::string &_endpoint, const std::string &_parameters, http_completion_event completion, const std::string &_postdata="", http_method method=m_get, const std::string &audit_reason="", const std::string &filename="", const std::string &filecontent="", const std::string &filemimetype="", const std::string &http_protocol="1.1")
 Constructor. When constructing one of these objects it should be passed to request_queue::post_request(). More...
 
 http_request (const std::string &_endpoint, const std::string &_parameters, http_completion_event completion, const std::string &_postdata="", http_method method=m_get, const std::string &audit_reason="", const std::vector< std::string > &filename={}, const std::vector< std::string > &filecontent={}, const std::vector< std::string > &filemimetypes={}, const std::string &http_protocol="1.1")
 Constructor. When constructing one of these objects it should be passed to request_queue::post_request(). More...
 
 http_request (const std::string &_url, http_completion_event completion, http_method method=m_get, const std::string &_postdata="", const std::string &_mimetype="text/plain", const std::multimap< std::string, std::string > &_headers={}, const std::string &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 ( const std::string &  _endpoint,
const std::string &  _parameters,
http_completion_event  completion,
const std::string &  _postdata = "",
http_method  method = m_get,
const std::string &  audit_reason = "",
const std::string &  filename = "",
const std::string &  filecontent = "",
const std::string &  filemimetype = "",
const std::string &  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 ( const std::string &  _endpoint,
const std::string &  _parameters,
http_completion_event  completion,
const std::string &  _postdata = "",
http_method  method = m_get,
const std::string &  audit_reason = "",
const std::vector< std::string > &  filename = {},
const std::vector< std::string > &  filecontent = {},
const std::vector< std::string > &  filemimetypes = {},
const std::string &  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 ( const std::string &  _url,
http_completion_event  completion,
http_method  method = m_get,
const std::string &  _postdata = "",
const std::string &  _mimetype = "text/plain",
const std::multimap< std::string, std::string > &  _headers = {},
const std::string &  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 10.0.35D++ Library version 10.0.34D++ Library version 10.0.33D++ Library version 10.0.32D++ Library version 10.0.31D++ Library version 10.0.30D++ Library version 10.0.29D++ Library version 10.0.28D++ Library version 10.0.27D++ Library version 10.0.26D++ Library version 10.0.25D++ Library version 10.0.24D++ Library version 10.0.23D++ Library version 10.0.22D++ Library version 10.0.21D++ Library version 10.0.20D++ Library version 10.0.19D++ Library version 10.0.18D++ Library version 10.0.17D++ Library version 10.0.16D++ Library version 10.0.15D++ Library version 10.0.14D++ Library version 10.0.13D++ Library version 10.0.12D++ Library version 10.0.11D++ Library version 10.0.10D++ Library version 10.0.9D++ Library version 10.0.8D++ Library version 10.0.7D++ Library version 10.0.6D++ Library version 10.0.5D++ Library version 10.0.4D++ Library version 10.0.3D++ Library version 10.0.2D++ Library version 10.0.1D++ Library version 10.0.0D++ Library version 9.0.19D++ Library version 9.0.18D++ Library version 9.0.17D++ Library version 9.0.16D++ Library version 9.0.15D++ Library version 9.0.14D++ 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