Bitcoin ABC 0.26.3
P2P Digital Currency
|
In-flight HTTP request. More...
#include <httpserver.h>
Public Types | |
enum | RequestMethod { UNKNOWN , GET , POST , HEAD , PUT , OPTIONS } |
Public Member Functions | |
HTTPRequest (struct evhttp_request *req, bool replySent=false) | |
~HTTPRequest () | |
std::string | GetURI () const |
Get requested URI. | |
CService | GetPeer () const |
Get CService (address:ip) for the origin of the http request. | |
RequestMethod | GetRequestMethod () const |
Get request method. | |
std::pair< bool, std::string > | GetHeader (const std::string &hdr) const |
Get the request header specified by hdr, or an empty string. | |
std::string | ReadBody () |
Read request body. | |
void | WriteHeader (const std::string &hdr, const std::string &value) |
Write output header. | |
void | WriteReply (int nStatus, const std::string &strReply="") |
Write HTTP reply. | |
Private Attributes | |
struct evhttp_request * | req |
bool | replySent |
In-flight HTTP request.
Thin C++ wrapper around evhttp_request.
Definition at line 74 of file httpserver.h.
Enumerator | |
---|---|
UNKNOWN | |
GET | |
POST | |
HEAD | |
PUT | |
OPTIONS |
Definition at line 83 of file httpserver.h.
|
explicit |
Definition at line 548 of file httpserver.cpp.
HTTPRequest::~HTTPRequest | ( | ) |
std::pair< bool, std::string > HTTPRequest::GetHeader | ( | const std::string & | hdr | ) | const |
Get the request header specified by hdr, or an empty string.
Return a pair (isPresent,string).
Definition at line 560 of file httpserver.cpp.
CService HTTPRequest::GetPeer | ( | ) | const |
Get CService (address:ip) for the origin of the http request.
Definition at line 638 of file httpserver.cpp.
HTTPRequest::RequestMethod HTTPRequest::GetRequestMethod | ( | ) | const |
Get request method.
Definition at line 655 of file httpserver.cpp.
std::string HTTPRequest::GetURI | ( | ) | const |
Get requested URI.
Definition at line 651 of file httpserver.cpp.
std::string HTTPRequest::ReadBody | ( | ) |
Read request body.
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 571 of file httpserver.cpp.
void HTTPRequest::WriteHeader | ( | const std::string & | hdr, |
const std::string & | value | ||
) |
Write output header.
Definition at line 595 of file httpserver.cpp.
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.
Replies must be sent in the main loop in the main http thread, this cannot be done from worker threads.
Definition at line 607 of file httpserver.cpp.
|
private |
Definition at line 77 of file httpserver.h.
|
private |
Definition at line 76 of file httpserver.h.