diff options
Diffstat (limited to 'src/RequestResponse.cpp')
-rw-r--r-- | src/RequestResponse.cpp | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/src/RequestResponse.cpp b/src/RequestResponse.cpp index 803b432..c3247e9 100644 --- a/src/RequestResponse.cpp +++ b/src/RequestResponse.cpp @@ -1,12 +1,13 @@ #include "RequestResponse.hpp" RequestResponse::RequestResponse(char const * const uri_path, struct evhttp_request * const req) - : m_UriPath(uri_path), m_Request(req) + : m_UriPath(uri_path), m_Request(req), m_InputHeader(nullptr), m_OutputHeader(nullptr) { } RequestResponse::~RequestResponse() { + evhttp_clear_headers(&m_Query); } void RequestResponse::UseInputHeader() @@ -19,13 +20,23 @@ void RequestResponse::UseOutputHeader() m_OutputHeader = evhttp_request_get_output_headers(m_Request); } -bool RequestResponse::AddOutputHeaderByRef(std::string const & key, std::string const & value) +bool RequestResponse::UseUri() { - if (m_OutputHeader == nullptr) + struct evhttp_uri const * const uri = evhttp_request_get_evhttp_uri(m_Request); + if (uri == nullptr) + { + return false; + } + char const * const query = evhttp_uri_get_query(uri); + if (query == nullptr) { return false; } + return evhttp_parse_query_str(query, &m_Query) == 0; +} +bool RequestResponse::AddOutputHeaderByRef(std::string const & key, std::string const & value) +{ return evhttp_add_header(m_OutputHeader, key.c_str(), value.c_str()) == 0; } @@ -36,11 +47,6 @@ bool RequestResponse::AddOutputHeader(std::string const key, std::string const v bool RequestResponse::RemoveOutputHeaderByRef(std::string const & key) { - if (m_OutputHeader == nullptr) - { - return false; - } - return evhttp_remove_header(m_OutputHeader, key.c_str()) == 0; } @@ -51,11 +57,6 @@ bool RequestResponse::RemoveOutputHeader(std::string const key) bool RequestResponse::GetInputHeaderByRef(std::string const & key, std::string & value) { - if (m_InputHeader == nullptr) - { - return false; - } - char const * const v = evhttp_find_header(m_InputHeader, key.c_str()); if (v == nullptr) @@ -71,3 +72,15 @@ bool RequestResponse::GetInputHeader(std::string const key, std::string value) { return GetInputHeaderByRef(key, value); } + +bool RequestResponse::QueryValueEquals(std::string key, std::string value) +{ + char const * const v = evhttp_find_header(&m_Query, key.c_str()); + + if (v == nullptr) + { + return false; + } + + return value == std::string(v); +} |