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);
296 const char* userPass=0,
311 int sendData(
const void* data,
int len);
320 int readData(
void* buf,
int bufSize);
369 struct SharkSsl* sharkSslClient;
375 const char* proxyUserPass;
376 const char* intfName;
388 BaBool chunkEncoding;
391 BaBool acceptTrusted;
406#define HttpClient_setSSL(o, ssl) (o)->sharkSslClient=ssl
407#define HttpClient_setReadTmo(o, timeout) (o)->readTmo=timeout
409SharkSslCon* HttpClient_getSharkSslCon(
HttpClient* o);
413int HttpClient_isURL(
const char* url);
417 const char* userPass,
422int HttpClient_sendData(
HttpClient* o,
const void* data,
int len);
424int HttpClient_readDataBuffered(
HttpClient* o,
void* buf,
int bufSize);
425int HttpClient_readData(
HttpClient* o,
void* buf,
int bufSize);
426const char* HttpClient_getHeaderValue(
HttpClient* o,
const char* name);
430#define HttpClient_getError(o) (o)->lastError
431#define HttpClient_getSoDispCon(o) ((SoDispCon*)(o))
433SharkSslConTrust HttpClient_trusted(
HttpClient* o);
435#define HttpClient_setAcceptTrusted(o, t) (o)->acceptTrusted=t
441 HttpClient_constructor(
this,disp, mode);
445 HttpClient_destructor(
this);
449 HttpClient_setSSL(
this,ssl);
453 HttpClient_setReadTmo(
this,timeout);
457 return HttpClient_isURL(url);
462 return HttpClient_trusted(
this);
466 HttpClient_setAcceptTrusted(
this, t?TRUE:FALSE);
471 return HttpClient_getSharkSslCon(
this);
477 const char* userPass,
482 return HttpClient_request(
this,methodType,url,userPass,params,headers,size);
486 return HttpClient_sendData(
this, data, len);
490 return HttpClient_getBufSize(
this);
494 return HttpClient_readData(
this, buf, bufSize);
498 return HttpClient_getHeaderValue(
this, name);
502 return HttpClient_getHeaders(
this, hlen);
506 HttpClient_close(
this);
510 return HttpClient_getStatus(
this);
515 return HttpClient_getError(
this);
519 return HttpClient_getSoDispCon(
this);
523 return c->db.buf + key;
526 return c->db.buf + val;
static int isURL(const char *url)
Returns true if the URL is valid.
Definition: HttpClient.h:456
int readData(void *buf, int bufSize)
Read HTTP response data.
Definition: HttpClient.h:493
void setSSL(SharkSsl *ssl)
Set the SharkSSL client object to enable https: URL's.
Definition: HttpClient.h:448
SoDispCon * getSoDispCon()
Returns the underlying dispatcher connection object.
Definition: HttpClient.h:518
~HttpClient()
Terminate the HttpClient.
Definition: HttpClient.h:444
void close()
Close a persistent HTTP 1.1 connection.
Definition: HttpClient.h:505
HttpClientHeader * getHeaders(int *hlen)
Returns all HTTP response headers.
Definition: HttpClient.h:501
int sendData(const void *data, int len)
Send data to the server.
Definition: HttpClient.h:485
int getBufSize()
Returns the size of the internal response buffer.
Definition: HttpClient.h:489
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:475
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:497
SharkSslCon * getSharkSslCon()
Wrapper for SoDispCon::getSharkSslCon.
Definition: HttpClient.h:470
int getError()
Returns the last socket error code if any.
Definition: HttpClient.h:514
const char * getVal(HttpClient *c)
Returns the value.
Definition: HttpClient.h:525
int getStatus()
Returns the server's HTTP response code or a negative value on socket errors.
Definition: HttpClient.h:509
void setReadTmo(BaTime timeout)
Set the read timeout (in milliseconds).
Definition: HttpClient.h:452
const char * getKey(HttpClient *c)
Returns the key.
Definition: HttpClient.h:522
SharkSslConTrust trusted(void)
Returns the peer's "trust" status.
Definition: HttpClient.h:461
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:465
HttpClient(SoDisp *disp, U8 mode=HttpClient_Persistent)
Create a HttpClient instance.
Definition: HttpClient.h:440
HttpMethod
HTTP method types.
Definition: HttpServer.h:788
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