rsstats 0.0.1
Redis Enterprise Statistic collector
libhttp.h File Reference

HTTP parsing and building library. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef enum HTTPVersion_e HTTPVersion_t
 
typedef enum HTTPMethod_e HTTPMethod_t
 
typedef enum HTTPStatus_e HTTPStatus_t
 
typedef struct HTTPHeader_s HTTPHeader_t
 
typedef struct HTTP_s HTTP_t
 

Enumerations

enum  HTTPVersion_e {
  HTTPVERSION_HTTP09 , HTTPVERSION_HTTP10 , HTTPVERSION_HTTP11 , HTTPVERSION_HTTP11b ,
  HTTPVERSION_HTTP2 , HTTPVERSION_HTTP3 , HTTPVERSION_INVALID
}
 
enum  HTTPMethod_e {
  HTTPMETHOD_GET , HTTPMETHOD_HEAD , HTTPMETHOD_POST , HTTPMETHOD_PUT ,
  HTTPMETHOD_DELETE , HTTPMETHOD_CONNECT , HTTPMETHOD_OPTIONS , HTTPMETHOD_TRACE ,
  HTTPMETHOD_PATCH , HTTPMETHOD_INVALID
}
 
enum  HTTPStatus_e {
  INFO_CONTINUE = 100 , INFO_SWITCHINGPROTOCOLS = 101 , INFO_PROCESSING = 102 , INFO_EARLYHINTS = 103 ,
  SUCCESS_OK = 200 , SUCCESS_CREATED = 201 , SUCCESS_ACCEPTED = 202 , SUCCESS_NONAUTHORITATIVEINFORMATION = 203 ,
  SUCCESS_NOCONTENT = 204 , SUCCESS_RESETCONTENT = 205 , SUCCESS_PARTIALCONTENT = 206 , SUCCESS_MULTISTATUS = 207 ,
  SUCCESS_ALREADYREPORTED = 208 , SUCCESS_IMUSED = 226 , REDIRECTION_MULTIPLECHOICES = 300 , REDIRECTION_MOVEDPERMANENTLY = 301 ,
  REDIRECTION_FOUND = 302 , REDIRECTION_SEEOTHER = 303 , REDIRECTION_NOTMODIFIED = 304 , REDIRECTION_USEPROXY = 305 ,
  REDIRECTION_SWITCHPROXY = 306 , REDIRECTION_TEMPORARYREDIRECT = 307 , REDIRECTION_PERMANENTREDIRECT = 308 , CLIENTERROR_BADREQUEST = 400 ,
  CLIENTERROR_UNAUTHORIZED = 401 , CLIENTERROR_PAYMENTREQUIRED = 402 , CLIENTERROR_FORBIDDEN = 403 , CLIENTERROR_NOTFOUND = 404 ,
  CLIENTERROR_METHODNOTALLOWED = 405 , CLIENTERROR_NOTACCEPTABLE = 406 , CLIENTERROR_PROXYAUTHENTICATIONREQUIRED = 407 , CLIENTERROR_REQUESTTIMEOUT = 408 ,
  CLIENTERROR_CONFLICT = 409 , CLIENTERROR_GONE = 410 , CLIENTERROR_LENGTHREQUIRED = 411 , CLIENTERRORPRECONDITIONFAILED = 412 ,
  CLIENTERROR_PAYLOADTOOLARGE = 413 , CLIENTERROR_URITOOLONG = 414 , CLIENTERROR_UNSUPPORTEDMEDIATYPE = 415 , CLIENTERROR_RANGENOTSATISFIABLE = 416 ,
  CLIENTERROR_EXPECTATIONFAILED = 417 , CLIENTERROR_IMATEAPOT = 418 , CLIENTERROR_MISDIRECTEDREQUEST = 421 , CLIENTERROR_UNPROCESSABLECONTENT = 422 ,
  CLIENTERROR_LOCKED = 423 , CLIENTERROR_FAILEDDEPENDENCY = 424 , CLIENTERROR_TOOEARLY = 425 , CLIENTERROR_UPGRADEREQUIRED = 426 ,
  CLIENTERROR_PRECONDITIONREQUIRED = 428 , CLIENTERROR_TOOMANYREQUESTS = 429 , CLIENTERROR_REQUESTHEADERFIELDSTOOLARGE = 431 , CLIENTERROR_UNAVAILABLEFORLEGALREASONS = 451 ,
  SERVERERROR_INTERNALSERVERERROR = 500 , SERVERERROR_NOTIMPLEMENTED = 501 , SERVERERROR_BADGATEWAY = 502 , SERVERERROR_SERVICEUNAVAILABLE = 503 ,
  SERVERERROR_GATEWAYTIMEOUT = 504 , SERVERERROR_HTTPVERSIONNOTSUPPORTED = 505 , SERVERERROR_VARIANTALSONEGOTIATES = 506 , SERVERERROR_INSUFFICIENTSTORAGE = 507 ,
  SERVERERROR_LOOPDETECTED = 508 , SERVERERROR_NOTEXTENDED = 510 , SERVERERROR_NETWORKAUTHENTICATIONREQUIRED = 511
}
 

Functions

HTTP_tHTTP_new ()
 
void HTTP_del (HTTP_t *http)
 
HTTP_tHTTP_setbody (HTTP_t *http, const char *body)
 
char * HTTP_getbody (HTTP_t *http)
 
HTTPHeader_tHTTP_addheader (HTTP_t *http, const char *name, const char *value)
 
HTTPHeader_tHTTP_addbasicauth (HTTP_t *http, const char *login, const char *pass)
 
HTTPHeader_tHTTPHeader_setname (HTTPHeader_t *header, const char *name)
 
char * HTTPHeader_getname (HTTPHeader_t *header)
 
HTTPHeader_tHTTPHeader_setvalue (HTTPHeader_t *header, const char *value)
 
char * HTTPHeader_getvalue (HTTPHeader_t *header)
 
HTTPHeader_tHTTP_firstheader (const HTTP_t *http)
 
HTTPHeader_tHTTP_nextheader (const HTTPHeader_t *header)
 
HTTPHeader_tHTTP_findheader (const HTTPHeader_t *start, const char *name)
 
HTTP_tHTTP_remheader (HTTP_t *http, HTTPHeader_t *header)
 
char * HTTP_buildheaders (const HTTP_t *http)
 
HTTP_tHTTP_parseheaders (const char *text)
 
char * HTTP_buildrequest (const HTTP_t *http, const HTTPMethod_t method, const char *uri, const HTTPVersion_t version)
 
void HTTP_parserequest (const char *request, HTTP_t **http, HTTPMethod_t method, char *uri, HTTPVersion_t version)
 
char * HTTP_buildreply (const HTTP_t *http, const HTTPVersion_t version, const HTTPStatus_t status)
 
void HTTP_parsereply (const char *reply, HTTP_t **http, HTTPVersion_t *version, HTTPStatus_t *status)
 

Detailed Description

HTTP parsing and building library.

HTTP Status code reference : https://en.wikipedia.org/wiki/List_of_HTTP_status_codes HTTP Header fields reference : https://en.wikipedia.org/wiki/List_of_HTTP_header_fields

Author
François Cerbelle (Fanfan), franc.nosp@m.ois@.nosp@m.cerbe.nosp@m.lle..nosp@m.net

Definition in file libhttp.h.

Typedef Documentation

◆ HTTP_t

typedef struct HTTP_s HTTP_t

Definition at line 117 of file libhttp.h.

◆ HTTPHeader_t

typedef struct HTTPHeader_s HTTPHeader_t

Definition at line 115 of file libhttp.h.

◆ HTTPMethod_t

typedef enum HTTPMethod_e HTTPMethod_t

◆ HTTPStatus_t

typedef enum HTTPStatus_e HTTPStatus_t

◆ HTTPVersion_t

Enumeration Type Documentation

◆ HTTPMethod_e

Enumerator
HTTPMETHOD_GET 
HTTPMETHOD_HEAD 
HTTPMETHOD_POST 
HTTPMETHOD_PUT 
HTTPMETHOD_DELETE 
HTTPMETHOD_CONNECT 
HTTPMETHOD_OPTIONS 
HTTPMETHOD_TRACE 
HTTPMETHOD_PATCH 
HTTPMETHOD_INVALID 

Definition at line 35 of file libhttp.h.

◆ HTTPStatus_e

Enumerator
INFO_CONTINUE 
INFO_SWITCHINGPROTOCOLS 
INFO_PROCESSING 
INFO_EARLYHINTS 
SUCCESS_OK 
SUCCESS_CREATED 
SUCCESS_ACCEPTED 
SUCCESS_NONAUTHORITATIVEINFORMATION 
SUCCESS_NOCONTENT 
SUCCESS_RESETCONTENT 
SUCCESS_PARTIALCONTENT 
SUCCESS_MULTISTATUS 
SUCCESS_ALREADYREPORTED 
SUCCESS_IMUSED 
REDIRECTION_MULTIPLECHOICES 
REDIRECTION_MOVEDPERMANENTLY 
REDIRECTION_FOUND 
REDIRECTION_SEEOTHER 
REDIRECTION_NOTMODIFIED 
REDIRECTION_USEPROXY 
REDIRECTION_SWITCHPROXY 
REDIRECTION_TEMPORARYREDIRECT 
REDIRECTION_PERMANENTREDIRECT 
CLIENTERROR_BADREQUEST 
CLIENTERROR_UNAUTHORIZED 
CLIENTERROR_PAYMENTREQUIRED 
CLIENTERROR_FORBIDDEN 
CLIENTERROR_NOTFOUND 
CLIENTERROR_METHODNOTALLOWED 
CLIENTERROR_NOTACCEPTABLE 
CLIENTERROR_PROXYAUTHENTICATIONREQUIRED 
CLIENTERROR_REQUESTTIMEOUT 
CLIENTERROR_CONFLICT 
CLIENTERROR_GONE 
CLIENTERROR_LENGTHREQUIRED 
CLIENTERRORPRECONDITIONFAILED 
CLIENTERROR_PAYLOADTOOLARGE 
CLIENTERROR_URITOOLONG 
CLIENTERROR_UNSUPPORTEDMEDIATYPE 
CLIENTERROR_RANGENOTSATISFIABLE 
CLIENTERROR_EXPECTATIONFAILED 
CLIENTERROR_IMATEAPOT 
CLIENTERROR_MISDIRECTEDREQUEST 
CLIENTERROR_UNPROCESSABLECONTENT 
CLIENTERROR_LOCKED 
CLIENTERROR_FAILEDDEPENDENCY 
CLIENTERROR_TOOEARLY 
CLIENTERROR_UPGRADEREQUIRED 
CLIENTERROR_PRECONDITIONREQUIRED 
CLIENTERROR_TOOMANYREQUESTS 
CLIENTERROR_REQUESTHEADERFIELDSTOOLARGE 
CLIENTERROR_UNAVAILABLEFORLEGALREASONS 
SERVERERROR_INTERNALSERVERERROR 
SERVERERROR_NOTIMPLEMENTED 
SERVERERROR_BADGATEWAY 
SERVERERROR_SERVICEUNAVAILABLE 
SERVERERROR_GATEWAYTIMEOUT 
SERVERERROR_HTTPVERSIONNOTSUPPORTED 
SERVERERROR_VARIANTALSONEGOTIATES 
SERVERERROR_INSUFFICIENTSTORAGE 
SERVERERROR_LOOPDETECTED 
SERVERERROR_NOTEXTENDED 
SERVERERROR_NETWORKAUTHENTICATIONREQUIRED 

Definition at line 49 of file libhttp.h.

◆ HTTPVersion_e

Enumerator
HTTPVERSION_HTTP09 
HTTPVERSION_HTTP10 
HTTPVERSION_HTTP11 
HTTPVERSION_HTTP11b 
HTTPVERSION_HTTP2 
HTTPVERSION_HTTP3 
HTTPVERSION_INVALID 

Definition at line 25 of file libhttp.h.

Function Documentation

◆ HTTP_addbasicauth()

HTTPHeader_t * HTTP_addbasicauth ( HTTP_t http,
const char *  login,
const char *  pass 
)

Definition at line 236 of file libhttp.c.

Here is the call graph for this function:

◆ HTTP_addheader()

HTTPHeader_t * HTTP_addheader ( HTTP_t http,
const char *  name,
const char *  value 
)

Definition at line 209 of file libhttp.c.

Here is the caller graph for this function:

◆ HTTP_buildheaders()

char * HTTP_buildheaders ( const HTTP_t http)
Bug:
possible memory leak, check strconcat return values

Definition at line 371 of file libhttp.c.

Here is the call graph for this function:

◆ HTTP_buildreply()

char * HTTP_buildreply ( const HTTP_t http,
const HTTPVersion_t  version,
const HTTPStatus_t  status 
)

Definition at line 520 of file libhttp.c.

◆ HTTP_buildrequest()

char * HTTP_buildrequest ( const HTTP_t http,
const HTTPMethod_t  method,
const char *  uri,
const HTTPVersion_t  version 
)

Definition at line 403 of file libhttp.c.

◆ HTTP_del()

void HTTP_del ( HTTP_t http)

Definition at line 157 of file libhttp.c.

Here is the call graph for this function:

◆ HTTP_findheader()

HTTPHeader_t * HTTP_findheader ( const HTTPHeader_t start,
const char *  name 
)

Definition at line 305 of file libhttp.c.

Here is the call graph for this function:

◆ HTTP_firstheader()

HTTPHeader_t * HTTP_firstheader ( const HTTP_t http)

Definition at line 276 of file libhttp.c.

Here is the call graph for this function:

◆ HTTP_getbody()

char * HTTP_getbody ( HTTP_t http)

Definition at line 201 of file libhttp.c.

◆ HTTP_new()

HTTP_t * HTTP_new ( )

Definition at line 133 of file libhttp.c.

Here is the call graph for this function:

◆ HTTP_nextheader()

HTTPHeader_t * HTTP_nextheader ( const HTTPHeader_t header)

Definition at line 288 of file libhttp.c.

Here is the call graph for this function:

◆ HTTP_parseheaders()

HTTP_t * HTTP_parseheaders ( const char *  text)

Definition at line 612 of file libhttp.c.

◆ HTTP_parsereply()

void HTTP_parsereply ( const char *  reply,
HTTP_t **  http,
HTTPVersion_t version,
HTTPStatus_t status 
)

Definition at line 629 of file libhttp.c.

◆ HTTP_parserequest()

void HTTP_parserequest ( const char *  request,
HTTP_t **  http,
HTTPMethod_t  method,
char *  uri,
HTTPVersion_t  version 
)

Definition at line 619 of file libhttp.c.

◆ HTTP_remheader()

HTTP_t * HTTP_remheader ( HTTP_t http,
HTTPHeader_t header 
)

Definition at line 336 of file libhttp.c.

Here is the call graph for this function:

◆ HTTP_setbody()

HTTP_t * HTTP_setbody ( HTTP_t http,
const char *  body 
)

Definition at line 183 of file libhttp.c.

◆ HTTPHeader_getname()

char * HTTPHeader_getname ( HTTPHeader_t header)

Definition at line 65 of file libhttp.c.

Here is the caller graph for this function:

◆ HTTPHeader_getvalue()

char * HTTPHeader_getvalue ( HTTPHeader_t header)

Definition at line 90 of file libhttp.c.

◆ HTTPHeader_setname()

HTTPHeader_t * HTTPHeader_setname ( HTTPHeader_t header,
const char *  name 
)

Definition at line 43 of file libhttp.c.

◆ HTTPHeader_setvalue()

HTTPHeader_t * HTTPHeader_setvalue ( HTTPHeader_t header,
const char *  value 
)

Definition at line 73 of file libhttp.c.