32#include <boost/utility/string_view.hpp>
39#undef MONERO_DEFAULT_LOG_CATEGORY
40#define MONERO_DEFAULT_LOG_CATEGORY "net.http"
67 typedef std::list<std::pair<std::string, std::string> >
fields_list;
73 static inline void add_field(std::string& out, boost::string_view name, boost::string_view
value)
75 out.append(name.data(), name.size()).append(
": ");
76 out.append(
value.data(),
value.size()).append(
"\r\n");
78 static inline void add_field(std::string& out,
const std::pair<std::string, std::string>& field)
80 add_field(out, field.first, field.second);
87 if(!line.empty() && line.back() ==
'\r')
88 line.remove_suffix(1);
91 if(line.front() ==
' ' || line.front() ==
'\t')
94 const size_t colon = line.find(
':');
95 if(colon == boost::string_view::npos || colon == 0)
98 name = line.substr(0, colon);
99 value = line.substr(colon + 1);
100 while(!
value.empty() && (
value.front() ==
' ' ||
value.front() ==
'\t'))
101 value.remove_prefix(1);
103 value.remove_suffix(1);
107 const bool alnum = (c >=
'A' && c <=
'Z') || (c >=
'a' && c <=
'z') || (c >=
'0' && c <=
'9');
108 const bool allowed = alnum ||
109 c ==
'!' || c ==
'#' || c ==
'$' || c ==
'%' || c ==
'&' ||
110 c ==
'\'' || c ==
'*' || c ==
'+' || c ==
'-' || c ==
'.' ||
111 c ==
'^' || c ==
'_' || c ==
'`' || c ==
'|' || c ==
'~';
void * memwipe(void *src, size_t n)
Definition memwipe.c:107
declaration and default definition for the functions used the API
Definition expect.cpp:34
bool parse_header_line(boost::string_view line, boost::string_view &name, boost::string_view &value)
Definition http_base.h:85
http_method
Definition http_base.h:49
@ http_method_head
Definition http_base.h:54
@ http_method_etc
Definition http_base.h:55
@ http_method_put
Definition http_base.h:53
@ http_method_get
Definition http_base.h:51
@ http_method_post
Definition http_base.h:52
@ http_method_options
Definition http_base.h:50
@ http_method_unknown
Definition http_base.h:56
http_content_type
Definition http_base.h:60
@ http_content_type_text_html
Definition http_base.h:61
@ http_content_type_other
Definition http_base.h:63
@ http_content_type_not_set
Definition http_base.h:64
@ http_content_type_image_gif
Definition http_base.h:62
static void add_field(std::string &out, boost::string_view name, boost::string_view value)
Definition http_base.h:73
std::list< std::pair< std::string, std::string > > fields_list
Definition http_base.h:67
std::string get_value_from_fields_list(const std::string ¶m_name, const net_utils::http::fields_list &fields)
Definition http_base.cpp:44
std::string get_value_from_uri_line(const std::string ¶m_name, const std::string &uri)
Definition http_base.cpp:57
TODO: (mj-xmr) This will be reduced in an another PR.
Definition byte_slice.h:40
const GenericPointer< typename T::ValueType > T2 value
Definition pointer.h:1225
unsigned __int64 uint64_t
Definition stdint.h:136
http_request_info()
Definition http_base.h:170
bool m_have_to_block
Definition http_base.h:185
std::string m_full_request_str
Definition http_base.h:180
size_t m_full_request_buf_size
Definition http_base.h:188
uri_content m_uri_content
Definition http_base.h:187
int m_http_ver_hi
Definition http_base.h:183
std::string m_body
Definition http_base.h:189
std::string m_http_method_str
Definition http_base.h:179
http_header_info m_header_info
Definition http_base.h:186
std::string m_replace_html
Definition http_base.h:181
http_method m_http_method
Definition http_base.h:177
std::string m_request_head
Definition http_base.h:182
std::string m_URI
Definition http_base.h:178
void clear()
Definition http_base.h:191
int m_http_ver_lo
Definition http_base.h:184
Definition http_base.h:200
int m_http_ver_lo
Definition http_base.h:208
void clear()
Definition http_base.h:210
int m_http_ver_hi
Definition http_base.h:207
void wipe()
Definition http_base.h:216
std::string m_response_comment
Definition http_base.h:202
std::string m_mime_tipe
Definition http_base.h:205
int m_response_code
Definition http_base.h:201
http_header_info m_header_info
Definition http_base.h:206
std::string m_body
Definition http_base.h:204
fields_list m_additional_fields
Definition http_base.h:203
Definition http_base.h:151
std::string m_path
Definition http_base.h:152
std::string m_fragment
Definition http_base.h:154
std::list< std::pair< std::string, std::string > > m_query_params
Definition http_base.h:155
std::string m_query
Definition http_base.h:153
Definition http_base.h:159
uri_content m_uri_content
Definition http_base.h:164
std::string schema
Definition http_base.h:160
std::string host
Definition http_base.h:161
uint64_t port
Definition http_base.h:163