Go to the documentation of this file.
10 #define OPENSSL_NO_SHA1 1
23 void abort(std::string
const &message = {});
68 URL(std::string
const &addr);
88 friend class ::WebClient;
95 Request(std::string
const &loc, std::vector<std::string>
const &
headers = {})
128 virtual ~Error() =
default;
179 static int get_port(
URL const *url,
char const *scheme,
char const *protocol);
182 void parse_http_header(
char const *begin,
char const *end, std::vector<std::string> *header);
188 static std::string
header_value(std::vector<std::string>
const *header, std::string
const &name);
211 std::string
header_value(std::string
const &name)
const;
220 static std::string
get(
const std::string &url);
int crlf_state
Definition: webclient.cpp:186
Part(char const *data, size_t size, std::string const &content_type={})
Definition: webclient.h:160
int last_port
Definition: webclient.cpp:189
void set_content_disposition(ContentDisposition const &cd)
Definition: webclient.h:166
Definition: webclient.h:153
~WebContext()
Definition: webclient.cpp:1212
WebProxy https_proxy
Definition: webclient.cpp:121
#define USER_AGENT
Definition: webclient.cpp:44
URL url
Definition: webclient.h:90
std::string scheme
Definition: webclient.h:61
std::string content_type
Definition: webclient.h:144
void operator=(WebContext const &r)=delete
bool isssl() const
Definition: webclient.cpp:167
void set_basic_authorization(std::string const &uid, std::string const &pwd)
Definition: webclient.h:110
std::string type
Definition: webclient.h:149
const std::string & host() const
Definition: webclient.h:70
WebClientHandler * handler
Definition: webclient.h:172
bool load_cacert(char const *path)
Definition: webclient.cpp:1261
void append(char const *ptr, size_t len, std::vector< char > *out, WebClientHandler *handler)
Definition: webclient.cpp:448
size_t content_offset
Definition: webclient.cpp:187
void receive_(const RequestOption &opt, std::function< int(char *, int)> const &, ResponseHeader *rh, std::vector< char > *out)
Definition: webclient.cpp:585
Definition: webclient.h:48
Definition: webclient.h:119
SSL_CTX * ctx
Definition: webclient.cpp:118
@ Basic
Definition: webclient.h:82
int code
Definition: webclient.h:135
WebClient(WebContext *webcx)
Definition: webclient.cpp:195
std::string message() const
Definition: webclient.h:129
static constexpr const char * APPLICATION_X_WWW_FORM_URLENCODED
Definition: webclient.h:53
void clear_error()
Definition: webclient.cpp:270
std::string last_host_name
Definition: webclient.cpp:188
void close()
Definition: webclient.cpp:1110
WebContext(WebClient::HttpVersion httpver)
Definition: webclient.cpp:1199
static void cleanup()
Definition: webclient.cpp:228
std::string name
Definition: webclient.h:150
Definition: webclient.h:59
Private * m
Definition: webclient.h:228
bool resolve(char const *name, _in_addr *out)
Definition: webclient.cpp:99
void set_http_proxy(std::string const &proxy)
Definition: webclient.cpp:1230
void on_end_header(const std::vector< char > *vec, WebClientHandler *handler)
Definition: webclient.cpp:437
std::string uid
Definition: webclient.h:84
void base64_encode(char const *src, size_t length, std::vector< char > *out)
Definition: base64.cpp:35
WebContext * webcx
Definition: webclient.cpp:184
Definition: webclient.cpp:180
Definition: webclient.h:16
HttpVersion
Definition: webclient.h:75
~WebClient()
Definition: webclient.cpp:203
void operator=(WebClient const &)=delete
Definition: webclient.h:56
void abort(std::string const &message={})
Definition: webclient.cpp:175
struct WebClient::Response::Version version
const char * data
Definition: webclient.h:154
Request(std::string const &loc, std::vector< std::string > const &headers={})
Definition: webclient.h:95
std::string full_request
Definition: webclient.h:60
@ None
Definition: webclient.h:81
Definition: webclient.h:224
void output_debug_strings(const std::vector< std::string > &vec)
Definition: webclient.cpp:258
void set_keep_alive_enabled(bool f)
Definition: webclient.cpp:1225
Definition: webclient.h:171
void reset()
Definition: webclient.cpp:238
bool get(const Request &req, Post const *post, Response *out, WebClientHandler *handler)
Definition: webclient.cpp:935
static void send_(socket_t s, char const *ptr, int len)
Definition: webclient.cpp:424
static void parse_header(std::vector< std::string > const *header, WebClient::Response *res)
Definition: webclient.cpp:986
std::string msg_
Definition: webclient.h:121
std::vector< char > data
Definition: webclient.h:146
Type
Definition: webclient.h:80
static int get_port(URL const *url, char const *scheme, char const *protocol)
Definition: webclient.cpp:275
std::string content_type() const
Definition: webclient.cpp:1072
void notify_broken_pipe()
Definition: webclient.cpp:1271
virtual void checkContent(char const *ptr, size_t len)
Definition: webclient.h:30
std::vector< std::string > request_header
Definition: webclient.cpp:181
void _in_addr
Definition: webclient.h:13
static void make_multipart_form_data(const std::vector< Part > &parts, WebClient::Post *out, std::string const &boundary)
Definition: webclient.cpp:1143
static void make_application_www_form_urlencoded(char const *begin, char const *end, WebClient::Post *out)
Definition: webclient.cpp:1136
socket_t sock
Definition: webclient.cpp:191
WebClient::HttpVersion http_version
Definition: webclient.cpp:185
Definition: webclient.h:87
std::string filename
Definition: webclient.h:151
std::string make_http_request(const Request &url, Post const *post, const WebProxy *proxy, bool https)
Definition: webclient.cpp:351
const WebProxy * https_proxy() const
Definition: webclient.cpp:1250
static void initialize()
Definition: webclient.cpp:214
WebClient::Response response
Definition: webclient.cpp:183
static std::string header_value(std::vector< std::string > const *header, std::string const &name)
Definition: webclient.cpp:1049
void add_header(std::string const &s)
Definition: webclient.h:114
size_t size
Definition: webclient.h:155
static constexpr const char * APPLICATION_OCTET_STREAM
Definition: webclient.h:52
Definition: webclient.h:136
std::vector< std::string > header
Definition: webclient.h:140
static std::string checkip()
Definition: webclient.cpp:1287
@ HTTP_1_0
Definition: webclient.h:76
std::string server
Definition: webclient.h:39
Definition: webclient.cpp:116
Definition: webclient.h:79
int socket_t
Definition: webclient.cpp:20
bool decode_chunked(char const *ptr, char const *end, std::vector< char > *out)
Definition: webclient.cpp:902
void set_http_version(HttpVersion httpver)
Definition: webclient.cpp:209
Definition: webclient.h:37
Definition: webclient.h:21
std::string content_type
Definition: webclient.h:156
Private * m
Definition: webclient.h:176
static std::string to_s(size_t n)
Definition: webclient.cpp:296
#define INVALID_SOCKET
Definition: webclient.cpp:21
const std::string & scheme() const
Definition: webclient.h:69
@ HTTP_1_1
Definition: webclient.h:77
static char * stristr(char *str1, char const *str2)
Definition: webclient.cpp:484
virtual void checkHeader(WebClient *wc)
Definition: webclient.h:26
Definition: webclient.h:148
void set_authorization(Authorization::Type type, std::string const &uid, std::string const &pwd)
Definition: webclient.h:104
SSL * ssl
Definition: webclient.cpp:192
std::string path
Definition: webclient.h:64
bool empty() const
Definition: webclient.h:40
bool keep_alive
Definition: webclient.cpp:190
bool broken_pipe
Definition: webclient.cpp:122
const std::string & path() const
Definition: webclient.h:72
Error(std::string const &message)
Definition: webclient.h:124
int port() const
Definition: webclient.h:71
size_t content_length() const
Definition: webclient.cpp:1087
const WebProxy * http_proxy() const
Definition: webclient.cpp:1242
unsigned int hi
Definition: webclient.h:137
ContentDisposition content_disposition
Definition: webclient.h:157
std::string content_transfer_encoding
Definition: webclient.h:158
std::string boundary
Definition: webclient.h:145
struct WebClient::URL::Data data
Definition: webclient.h:143
WebClient::Error error
Definition: webclient.cpp:182
void set_default_header(const Request &url, Post const *post, const RequestOption &opt)
Definition: webclient.cpp:303
std::vector< std::string > headers
Definition: webclient.h:92
void set_http_version(WebClient::HttpVersion httpver)
Definition: webclient.cpp:1220
static int inet_connect(std::string const &hostname, int port)
Definition: webclient.cpp:616
#define SOCKET_ERROR
Definition: webclient.cpp:22
void parse_http_header(char const *begin, char const *end, std::vector< std::string > *header)
Definition: webclient.cpp:385
Authorization auth
Definition: webclient.h:91
int port
Definition: webclient.h:63
void set_https_proxy(std::string const &proxy)
Definition: webclient.cpp:1236
bool keep_alive
Definition: webclient.h:173
enum WebClient::Authorization::Type type
WebProxy http_proxy
Definition: webclient.cpp:120
const char * content_data() const
Definition: webclient.cpp:1092
#define closesocket(S)
Definition: webclient.cpp:19
bool http_get(const Request &request_req, Post const *post, RequestOption const &opt, ResponseHeader *rh, std::vector< char > *out)
Definition: webclient.cpp:636
WebClient::HttpVersion http_version
Definition: webclient.cpp:117
Definition: webclient.h:134
const Response & response() const
Definition: webclient.cpp:1131
void set_location(std::string const &loc)
Definition: webclient.h:100
int post(const Request &req, Post const *post, WebClientHandler *handler=nullptr)
Definition: webclient.cpp:1104
std::vector< char > content
Definition: webclient.h:141
std::string host
Definition: webclient.h:62
const string version
Definition: variables.hpp:66
std::string pwd
Definition: webclient.h:85
static constexpr const char * MULTIPART_FORM_DATA
Definition: webclient.h:54
unsigned int lo
Definition: webclient.h:138
void add_header(std::string const &text)
Definition: webclient.cpp:1126
const Error & error() const
Definition: webclient.cpp:265
bool https_get(const Request &request_url, Post const *post, RequestOption const &opt, ResponseHeader *rh, std::vector< char > *out)
Definition: webclient.cpp:686
bool use_keep_alive
Definition: webclient.cpp:119
void output_debug_string(char const *str)
Definition: webclient.cpp:247
virtual ~WebClientHandler()=default
Definition: webclient.h:50