41#include <SharkSslEx.h>
111#define HttpClientHeader_key(c,o) ((c)->db.super.buf + (o)->key)
112#define HttpClientHeader_val(c,o) ((c)->db.super.buf + (o)->val)
115#define HTTP_CLIENT_MAX_HEADERS 64
117#define HttpClient_SocksProxy 1
118#define HttpClient_ProxyConnect 2
119#define HttpClient_Persistent 4
120#define HttpClient_IPv6 8
122#define HttpClient_NoHostHeader 16
123#define HttpClient_NotUsed2 32
125#define HttpClient_UserDef1 64
126#define HttpClient_UserDef2 128
239 void setSSL(SharkSsl* ssl);
247 static int isURL(
const char* url);
254 SharkSslConTrust
trusted(
void);
295 const char* userPass=0,
310 int sendData(
const void* data,
int len);
319 int readData(
void* buf,
int bufSize);
368 struct SharkSsl* sharkSslClient;
374 const char* proxyUserPass;
375 const char* intfName;
387 BaBool chunkEncoding;
390 BaBool acceptTrusted;
405#define HttpClient_setSSL(o, ssl) (o)->sharkSslClient=ssl
406#define HttpClient_setReadTmo(o, timeout) (o)->readTmo=timeout
408SharkSslCon* HttpClient_getSharkSslCon(
HttpClient* o);
412int HttpClient_isURL(
const char* url);
416 const char* userPass,
421int HttpClient_sendData(
HttpClient* o,
const void* data,
int len);
423int HttpClient_readDataBuffered(
HttpClient* o,
void* buf,
int bufSize);
424int HttpClient_readData(
HttpClient* o,
void* buf,
int bufSize);
425const char* HttpClient_getHeaderValue(
HttpClient* o,
const char* name);
429#define HttpClient_getError(o) (o)->lastError
430#define HttpClient_getSoDispCon(o) ((SoDispCon*)(o))
432SharkSslConTrust HttpClient_trusted(
HttpClient* o);
434#define HttpClient_setAcceptTrusted(o, t) (o)->acceptTrusted=t
440 HttpClient_constructor(
this,disp, mode);
444 HttpClient_destructor(
this);
448 HttpClient_setSSL(
this,ssl);
452 HttpClient_setReadTmo(
this,timeout);
456 return HttpClient_isURL(url);
461 return HttpClient_trusted(
this);
465 HttpClient_setAcceptTrusted(
this, t?TRUE:FALSE);
470 return HttpClient_getSharkSslCon(
this);
476 const char* userPass,
481 return HttpClient_request(
this,methodType,url,userPass,params,headers,size);
485 return HttpClient_sendData(
this, data, len);
489 return HttpClient_getBufSize(
this);
493 return HttpClient_readData(
this, buf, bufSize);
497 return HttpClient_getHeaderValue(
this, name);
501 return HttpClient_getHeaders(
this, hlen);
505 HttpClient_close(
this);
509 return HttpClient_getStatus(
this);
514 return HttpClient_getError(
this);
518 return HttpClient_getSoDispCon(
this);
522 return c->db.buf + key;
525 return c->db.buf + val;
static int isURL(const char *url)
Returns true if the URL is valid.
Definition: HttpClient.h:455
int readData(void *buf, int bufSize)
Read HTTP response data.
Definition: HttpClient.h:492
void setSSL(SharkSsl *ssl)
Set the SharkSSL client object to enable https: URL's.
Definition: HttpClient.h:447
SoDispCon * getSoDispCon()
Returns the underlying dispatcher connection object.
Definition: HttpClient.h:517
~HttpClient()
Terminate the HttpClient.
Definition: HttpClient.h:443
void close()
Close a persistent HTTP 1.1 connection.
Definition: HttpClient.h:504
HttpClientHeader * getHeaders(int *hlen)
Returns all HTTP response headers.
Definition: HttpClient.h:500
int sendData(const void *data, int len)
Send data to the server.
Definition: HttpClient.h:484
int getBufSize()
Returns the size of the internal response buffer.
Definition: HttpClient.h:488
int request(HttpMethod methodType, const char *url, const char *userPass=0, const HttpClientKeyVal *query=0, const HttpClientKeyVal *headers=0, BaFileSize size=0)
Send an HTTP request.
Definition: HttpClient.h:474
const char * getHeaderValue(const char *name)
Returns the value for the header 'name' or NULL if the header is not in the response.
Definition: HttpClient.h:496
SharkSslCon * getSharkSslCon()
Wrapper for SoDispCon::getSharkSslCon.
Definition: HttpClient.h:469
int getError()
Returns the last socket error code if any.
Definition: HttpClient.h:513
const char * getVal(HttpClient *c)
Returns the value.
Definition: HttpClient.h:524
int getStatus()
Returns the server's HTTP response code or a negative value on socket errors.
Definition: HttpClient.h:508
void setReadTmo(BaTime timeout)
Set the read timeout (in milliseconds).
Definition: HttpClient.h:451
const char * getKey(HttpClient *c)
Returns the key.
Definition: HttpClient.h:521
SharkSslConTrust trusted(void)
Returns the peer's "trust" status.
Definition: HttpClient.h:460
struct HttpClientKeyVal HttpClientKeyVal
A container for key/value pairs used when setting custom HTTP headers or URL encoded HTTP parameters.
void setAcceptTrusted(bool acceptTrusted)
Force method HttpClient::request to accept only trusted connections when connecting to a server.
Definition: HttpClient.h:464
HttpClient(SoDisp *disp, U8 mode=HttpClient_Persistent)
Create a HttpClient instance.
Definition: HttpClient.h:439
HttpMethod
HTTP method types.
Definition: HttpServer.h:780
S64 BaTime
An arithmetic type representing calendar time with epoch of 1970-01-01 00:00:10 GMT – i....
Definition: GenPrimT.h:93
A dynamic buffer.
Definition: DynBuffer.h:60
A container for key/value pairs used when setting custom HTTP headers or URL encoded HTTP parameters.
Definition: HttpClient.h:88
The HTTP(S) "C" client library implementation conforms to the HTTP/1.1 standard, RFC 2616.
Definition: HttpClient.h:190
Contains information about the physical socket connection.
Definition: SoDispCon.h:112
The SoDisp dispatches any socket connection that contains data by calling the SoDispCon::execute memb...
Definition: SoDisp.h:86