NodeC  0.1

Initiating HTTP servers or clients. More...

Typedefs

typedef enum http_status http_status_t
 
typedef enum http_method http_method_t
 
typedef void() nodec_http_servefun()
 
typedef lh_value() http_connect_fun(http_in_t *in, http_out_t *out, lh_value arg)
 

Enumerations

enum  http_method_t {
  HTTP_DELETE, HTTP_GET, HTTP_HEAD, HTTP_POST,
  HTTP_PUT, HTTP_CONNECT, HTTP_OPTIONS, HTTP_TRACE,
  HTTP_COPY, HTTP_LOCK, HTTP_MKCOL, HTTP_MOVE,
  HTTP_PROPFIND, HTTP_PROPPATCH, HTTP_SEARCH, HTTP_UNLOCK,
  HTTP_BIND, HTTP_REBIND, HTTP_UNBIND, HTTP_ACL,
  HTTP_REPORT, HTTP_MKACTIVITY, HTTP_CHECKOUT, HTTP_MERGE,
  HTTP_MSEARCH, HTTP_NOTIFY, HTTP_SUBSCRIBE, HTTP_UNSUBSCRIBE,
  HTTP_PATCH, HTTP_PURGE, HTTP_MKCALENDAR, HTTP_LINK,
  HTTP_UNLINK, HTTP_SOURCE
}
 The HTTP method enumeration. More...
 
enum  http_status_t {
  HTTP_STATUS_CONTINUE, HTTP_STATUS_SWITCHING_PROTOCOLS, HTTP_STATUS_PROCESSING, HTTP_STATUS_OK,
  HTTP_STATUS_CREATED, HTTP_STATUS_ACCEPTED, HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION, HTTP_STATUS_NO_CONTENT,
  HTTP_STATUS_RESET_CONTENT, HTTP_STATUS_PARTIAL_CONTENT, HTTP_STATUS_MULTI_STATUS, HTTP_STATUS_ALREADY_REPORTED,
  HTTP_STATUS_IM_USED, HTTP_STATUS_MULTIPLE_CHOICES, HTTP_STATUS_MOVED_PERMANENTLY, HTTP_STATUS_FOUND,
  HTTP_STATUS_SEE_OTHER, HTTP_STATUS_NOT_MODIFIED, HTTP_STATUS_USE_PROXY, HTTP_STATUS_TEMPORARY_REDIRECT,
  HTTP_STATUS_PERMANENT_REDIRECT, HTTP_STATUS_BAD_REQUEST, HTTP_STATUS_UNAUTHORIZED, HTTP_STATUS_PAYMENT_REQUIRED,
  HTTP_STATUS_FORBIDDEN, HTTP_STATUS_NOT_FOUND, HTTP_STATUS_METHOD_NOT_ALLOWED, HTTP_STATUS_NOT_ACCEPTABLE,
  HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED, HTTP_STATUS_REQUEST_TIMEOUT, HTTP_STATUS_CONFLICT, HTTP_STATUS_GONE,
  HTTP_STATUS_LENGTH_REQUIRED, HTTP_STATUS_PRECONDITION_FAILED, HTTP_STATUS_PAYLOAD_TOO_LARGE, HTTP_STATUS_URI_TOO_LONG,
  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE, HTTP_STATUS_RANGE_NOT_SATISFIABLE, HTTP_STATUS_EXPECTATION_FAILED, HTTP_STATUS_MISDIRECTED_REQUEST,
  HTTP_STATUS_UNPROCESSABLE_ENTITY, HTTP_STATUS_LOCKED, HTTP_STATUS_FAILED_DEPENDENCY, HTTP_STATUS_UPGRADE_REQUIRED,
  HTTP_STATUS_PRECONDITION_REQUIRED, HTTP_STATUS_TOO_MANY_REQUESTS, HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE, HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS,
  HTTP_STATUS_INTERNAL_SERVER_ERROR, HTTP_STATUS_NOT_IMPLEMENTED, HTTP_STATUS_BAD_GATEWAY, HTTP_STATUS_SERVICE_UNAVAILABLE,
  HTTP_STATUS_GATEWAY_TIMEOUT, HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED, HTTP_STATUS_VARIANT_ALSO_NEGOTIATES, HTTP_STATUS_INSUFFICIENT_STORAGE,
  HTTP_STATUS_LOOP_DETECTED, HTTP_STATUS_NOT_EXTENDED, HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED
}
 HTTP server response status codes. More...
 

Functions

void throw_http_err (http_status_t status)
 
void throw_http_err_str (http_status_t status, const char *msg)
 
void throw_http_err_strdup (http_status_t status, const char *msg)
 
const char * nodec_http_status_str (http_status_t code)
 
const char * nodec_http_method_str (http_method_t method)
 
void async_http_server_at (const char *host, tcp_server_config_t *config, nodec_http_servefun *servefun)
 
lh_value async_http_connect_on (const char *host, nodec_bstream_t *connection, http_connect_fun *connectfun, lh_value arg)
 
lh_value async_http_connect (const char *url, http_connect_fun *connectfun, lh_value arg)
 

Detailed Description

Initiating HTTP servers or clients.

Enumeration Type Documentation

◆ http_method_t

The HTTP method enumeration.

The first 5 (8) are commonly used while the others are used in various protocols, like WebDAV, Subversion etc.

Enumerator
HTTP_DELETE 

DELETE method.

HTTP_GET 

GET method.

HTTP_HEAD 

HEAD method.

HTTP_POST 

POST method.

HTTP_PUT 

PUT method.

HTTP_CONNECT 

CONNECT method.

HTTP_OPTIONS 

OPTIONS method.

HTTP_TRACE 

TRACE method.

HTTP_COPY 

COPY method.

HTTP_LOCK 

LOCK method.

HTTP_MKCOL 

MKCOL method.

HTTP_MOVE 

MOVE method.

HTTP_PROPFIND 

PROPFIND method.

HTTP_PROPPATCH 

PROPPATCH method.

HTTP_SEARCH 

SEARCH method.

HTTP_UNLOCK 

UNLOCK method.

HTTP_BIND 

BIND method.

HTTP_REBIND 

REBIND method.

HTTP_UNBIND 

UNBIND method.

HTTP_ACL 

ACL method.

HTTP_REPORT 

REPORT method.

HTTP_MKACTIVITY 

MKACTIVITY method.

HTTP_CHECKOUT 

CHECKOUT method.

HTTP_MERGE 

MERGE method.

HTTP_MSEARCH 

MSEARCH method.

HTTP_NOTIFY 

NOTIFY method.

HTTP_SUBSCRIBE 

SUBSCRIBE method.

HTTP_UNSUBSCRIBE 

UNSUBSCRIBE method.

HTTP_PATCH 

PATCH method.

HTTP_PURGE 

PURGE method.

HTTP_MKCALENDAR 

MKCALENDAR method.

HTTP_LINK 

LINK method.

HTTP_UNLINK 

UNLINK method.

◆ http_status_t

HTTP server response status codes.

Enumerator
HTTP_STATUS_CONTINUE 

100, Continue)

HTTP_STATUS_SWITCHING_PROTOCOLS 

101, Switching Protocols)

HTTP_STATUS_PROCESSING 

102, Processing)

HTTP_STATUS_OK 

200, OK)

HTTP_STATUS_CREATED 

201, Created)

HTTP_STATUS_ACCEPTED 

202, Accepted)

HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION 

203, Non-Authoritative Information)

HTTP_STATUS_NO_CONTENT 

204, No Content)

HTTP_STATUS_RESET_CONTENT 

205, Reset Content)

HTTP_STATUS_PARTIAL_CONTENT 

206, Partial Content)

HTTP_STATUS_MULTI_STATUS 

207, Multi-Status)

HTTP_STATUS_ALREADY_REPORTED 

208, Already Reported)

HTTP_STATUS_IM_USED 

226, IM Used)

HTTP_STATUS_MULTIPLE_CHOICES 

300, Multiple Choices)

HTTP_STATUS_MOVED_PERMANENTLY 

301, Moved Permanently)

HTTP_STATUS_FOUND 

302, Found)

HTTP_STATUS_SEE_OTHER 

303, See Other)

HTTP_STATUS_NOT_MODIFIED 

304, Not Modified)

HTTP_STATUS_USE_PROXY 

305, Use Proxy)

HTTP_STATUS_TEMPORARY_REDIRECT 

307, Temporary Redirect)

HTTP_STATUS_PERMANENT_REDIRECT 

308, Permanent Redirect)

HTTP_STATUS_BAD_REQUEST 

400, Bad Request)

HTTP_STATUS_UNAUTHORIZED 

401, Unauthorized)

HTTP_STATUS_PAYMENT_REQUIRED 

402, Payment Required)

HTTP_STATUS_FORBIDDEN 

403, Forbidden)

HTTP_STATUS_NOT_FOUND 

404, Not Found)

HTTP_STATUS_METHOD_NOT_ALLOWED 

405, Method Not Allowed)

HTTP_STATUS_NOT_ACCEPTABLE 

406, Not Acceptable)

HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED 

407, Proxy Authentication Required)

HTTP_STATUS_REQUEST_TIMEOUT 

408, Request Timeout)

HTTP_STATUS_CONFLICT 

409, Conflict)

HTTP_STATUS_GONE 

410, Gone)

HTTP_STATUS_LENGTH_REQUIRED 

411, Length Required)

HTTP_STATUS_PRECONDITION_FAILED 

412, Precondition Failed)

HTTP_STATUS_PAYLOAD_TOO_LARGE 

413, Payload Too Large)

HTTP_STATUS_URI_TOO_LONG 

414, URI Too Long)

HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE 

415, Unsupported Media Type)

HTTP_STATUS_RANGE_NOT_SATISFIABLE 

416, Range Not Satisfiable)

HTTP_STATUS_EXPECTATION_FAILED 

417, Expectation Failed)

HTTP_STATUS_MISDIRECTED_REQUEST 

421, Misdirected Request)

HTTP_STATUS_UNPROCESSABLE_ENTITY 

422, Unprocessable Entity)

HTTP_STATUS_LOCKED 

423, Locked)

HTTP_STATUS_FAILED_DEPENDENCY 

424, Failed Dependency)

HTTP_STATUS_UPGRADE_REQUIRED 

426, Upgrade Required)

HTTP_STATUS_PRECONDITION_REQUIRED 

428, Precondition Required)

HTTP_STATUS_TOO_MANY_REQUESTS 

429, Too Many Requests)

HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE 

431, Request Header Fields Too Large)

HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS 

451, Unavailable For Legal Reasons)

HTTP_STATUS_INTERNAL_SERVER_ERROR 

500, Internal Server Error)

HTTP_STATUS_NOT_IMPLEMENTED 

501, Not Implemented)

HTTP_STATUS_BAD_GATEWAY 

502, Bad Gateway)

HTTP_STATUS_SERVICE_UNAVAILABLE 

503, Service Unavailable)

HTTP_STATUS_GATEWAY_TIMEOUT 

504, Gateway Timeout)

HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED 

505, HTTP Version Not Supported)

HTTP_STATUS_VARIANT_ALSO_NEGOTIATES 

506, Variant Also Negotiates)

HTTP_STATUS_INSUFFICIENT_STORAGE 

507, Insufficient Storage)

HTTP_STATUS_LOOP_DETECTED 

508, Loop Detected)

HTTP_STATUS_NOT_EXTENDED 

510, Not Extended)

HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED 

511, Network Authentication Required)