Dash Core Source Documentation (0.16.0.1)
Find detailed information regarding the Dash Core source code.
In-flight HTTP request. More...
#include <httpserver.h>
Public Types | |
enum | RequestMethod { UNKNOWN, GET, POST, HEAD, PUT } |
Public Member Functions | |
HTTPRequest (struct evhttp_request *req) | |
~HTTPRequest () | |
std::string | GetURI () |
Get requested URI. More... | |
CService | GetPeer () |
Get CService (address:ip) for the origin of the http request. More... | |
RequestMethod | GetRequestMethod () |
Get request method. More... | |
std::pair< bool, std::string > | GetHeader (const std::string &hdr) |
Get the request header specified by hdr, or an empty string. More... | |
std::string | ReadBody () |
Read request body. More... | |
void | WriteHeader (const std::string &hdr, const std::string &value) |
Write output header. More... | |
void | WriteReply (int nStatus, const std::string &strReply="") |
Write HTTP reply. More... | |
Private Attributes | |
struct evhttp_request * | req |
bool | replySent |
Detailed Description
In-flight HTTP request.
Thin C++ wrapper around evhttp_request.
Definition at line 57 of file httpserver.h.
Member Enumeration Documentation
◆ RequestMethod
Enumerator | |
---|---|
UNKNOWN | |
GET | |
POST | |
HEAD | |
PUT |
Definition at line 67 of file httpserver.h.
Constructor & Destructor Documentation
◆ HTTPRequest()
|
explicit |
Definition at line 518 of file httpserver.cpp.
◆ ~HTTPRequest()
HTTPRequest::~HTTPRequest | ( | ) |
Definition at line 522 of file httpserver.cpp.
References LogPrintf, replySent, and WriteReply().
Member Function Documentation
◆ GetHeader()
std::pair< bool, std::string > HTTPRequest::GetHeader | ( | const std::string & | hdr | ) |
Get the request header specified by hdr, or an empty string.
Return a pair (isPresent,string).
Definition at line 532 of file httpserver.cpp.
References req.
Referenced by HTTPReq_JSONRPC().
◆ GetPeer()
CService HTTPRequest::GetPeer | ( | ) |
Get CService (address:ip) for the origin of the http request.
Definition at line 605 of file httpserver.cpp.
References LookupNumeric(), and req.
Referenced by HTTPReq_JSONRPC().
◆ GetRequestMethod()
HTTPRequest::RequestMethod HTTPRequest::GetRequestMethod | ( | ) |
Get request method.
Definition at line 624 of file httpserver.cpp.
References GET, HEAD, POST, PUT, req, and UNKNOWN.
Referenced by HTTPReq_JSONRPC().
◆ GetURI()
std::string HTTPRequest::GetURI | ( | ) |
Get requested URI.
Definition at line 619 of file httpserver.cpp.
References req.
Referenced by HTTPReq_JSONRPC().
◆ ReadBody()
std::string HTTPRequest::ReadBody | ( | ) |
Read request body.
- Note
- As this consumes the underlying buffer, call this only once. Repeated calls will return an empty string.
Trivial implementation: if this is ever a performance bottleneck, internal copying can be avoided in multi-segment buffers by using evbuffer_peek and an awkward loop. Though in that case, it'd be even better to not copy into an intermediate string but use a stream abstraction to consume the evbuffer on the fly in the parsing algorithm.
Definition at line 543 of file httpserver.cpp.
References req.
Referenced by HTTPReq_JSONRPC(), and rest_getutxos().
◆ WriteHeader()
void HTTPRequest::WriteHeader | ( | const std::string & | hdr, |
const std::string & | value | ||
) |
Write output header.
- Note
- call this before calling WriteErrorReply or Reply.
Definition at line 563 of file httpserver.cpp.
References req.
Referenced by HTTPReq_JSONRPC(), JSONErrorReply(), rest_block(), rest_chaininfo(), rest_getutxos(), rest_headers(), rest_mempool_contents(), rest_mempool_info(), rest_tx(), RESTERR(), and WriteReply().
◆ WriteReply()
void HTTPRequest::WriteReply | ( | int | nStatus, |
const std::string & | strReply = "" |
||
) |
Write HTTP reply.
Closure sent to main thread to request a reply to be sent to a HTTP request.
nStatus is the HTTP status code to send. strReply is the body of the reply. Keep it empty to send a standard message.
- Note
- Can be called only once. As this will give the request back to the main thread, do not call any other HTTPRequest methods after calling this.
Replies must be sent in the main loop in the main http thread, this cannot be done from worker threads.
Definition at line 575 of file httpserver.cpp.
References eventBase, replySent, req, ShutdownRequested(), HTTPEvent::trigger(), and WriteHeader().
Referenced by HTTPReq_JSONRPC(), JSONErrorReply(), rest_block(), rest_chaininfo(), rest_getutxos(), rest_headers(), rest_mempool_contents(), rest_mempool_info(), rest_tx(), RESTERR(), and ~HTTPRequest().
Member Data Documentation
◆ replySent
|
private |
Definition at line 61 of file httpserver.h.
Referenced by WriteReply(), and ~HTTPRequest().
◆ req
|
private |
Definition at line 60 of file httpserver.h.
Referenced by GetHeader(), GetPeer(), GetRequestMethod(), GetURI(), ReadBody(), WriteHeader(), and WriteReply().
The documentation for this class was generated from the following files:
- src/httpserver.h
- src/httpserver.cpp