26 #ifndef STATICLIB_PION_HTTP_REQUEST_HPP
27 #define STATICLIB_PION_HTTP_REQUEST_HPP
32 #include "staticlib/config.hpp"
53 std::string m_resource;
58 std::string m_original_resource;
63 std::string m_query_string;
68 std::unordered_multimap<std::string, std::string, algorithm::ihash, algorithm::iequal_to> m_query_params;
73 http_parser::payload_handler_type m_payload_handler;
110 m_original_resource.erase();
111 m_query_string.erase();
112 m_query_params.clear();
148 return m_original_resource;
157 return m_query_string;
166 const std::string&
get_query(
const std::string& key)
const {
175 std::unordered_multimap<std::string, std::string, algorithm::ihash, algorithm::iequal_to>&
get_queries() {
176 return m_query_params;
186 return (m_query_params.find(key) != m_query_params.end());
203 m_resource = m_original_resource = str;
222 m_query_string = str;
232 void add_query(
const std::string& key,
const std::string& value) {
233 m_query_params.insert(std::make_pair(key, value));
269 if (!post_content.empty()) {
270 memcpy(ptr, post_content.c_str(), post_content.size());
284 if (!value.empty()) {
285 memcpy(ptr, value.c_str(), value.size());
294 if (
nullptr == value || 0 == size)
return;
297 std::memcpy(ptr, value, size);
307 m_payload_handler = std::move(ph);
311 if (m_request_reader) {
314 m_request_reader =
nullptr;
325 return m_payload_handler.target<T>();
334 return m_payload_handler;
341 m_request_reader = rr;
355 if (!m_query_string.empty()) {
369 for (std::unordered_multimap<std::string, std::string, algorithm::ihash, algorithm::iequal_to>::const_iterator i =
get_cookies().begin(); i !=
get_cookies().end(); ++i) {
370 std::string cookie_header;
371 cookie_header = i->first;
373 cookie_header += i->second;
383 using http_request_ptr = std::unique_ptr<http_request>;
389 #endif // STATICLIB_PION_HTTP_REQUEST_HPP