tinywebd

annotate src/http.h @ 2:7bb4c2a0a360

foo
author John Tsiombikas <nuclear@member.fsf.org>
date Wed, 15 Apr 2015 23:44:22 +0300
parents f425a9805d17
children 852a745503cf
rev   line source
nuclear@1 1 #ifndef HTTP_H_
nuclear@1 2 #define HTTP_H_
nuclear@1 3
nuclear@1 4 enum http_method {
nuclear@1 5 HTTP_UNKNOWN,
nuclear@1 6 HTTP_OPTIONS,
nuclear@1 7 HTTP_GET,
nuclear@1 8 HTTP_HEAD,
nuclear@1 9 HTTP_POST,
nuclear@1 10 HTTP_PUT,
nuclear@1 11 HTTP_DELETE,
nuclear@1 12 HTTP_TRACE,
nuclear@1 13 HTTP_CONNECT,
nuclear@1 14
nuclear@1 15 NUM_HTTP_METHODS
nuclear@1 16 };
nuclear@1 17
nuclear@1 18 const char *http_method_str[] = {
nuclear@1 19 "<unknown>",
nuclear@1 20 "OPTIONS",
nuclear@1 21 "GET",
nuclear@1 22 "HEAD",
nuclear@1 23 "POST",
nuclear@1 24 "PUT",
nuclear@1 25 "DELETE",
nuclear@1 26 "TRACE",
nuclear@1 27 "CONNECT",
nuclear@1 28 0
nuclear@1 29 };
nuclear@1 30
nuclear@1 31
nuclear@1 32 struct http_req_header {
nuclear@1 33 enum http_method method;
nuclear@1 34 char *uri;
nuclear@1 35 int ver_major, ver_minor; /* http version */
nuclear@2 36 char **hdrfields;
nuclear@2 37 int num_hdrfields;
nuclear@1 38 };
nuclear@1 39
nuclear@1 40
nuclear@2 41 int http_parse_header(struct http_req_header *hdr, const char *buf, int bufsz);
nuclear@2 42
nuclear@2 43 const char *http_strmsg(int code);
nuclear@2 44
nuclear@2 45
nuclear@1 46 /* HTTP 1xx message strings */
nuclear@1 47 const char *http_msg1xx[] = {
nuclear@1 48 "Continue", /* 100 */
nuclear@1 49 "Switching Protocols" /* 101 */
nuclear@1 50 };
nuclear@1 51
nuclear@1 52 /* HTTP 2xx message strings */
nuclear@1 53 const char *http_msg2xx[] = {
nuclear@1 54 "OK", /* 200 */
nuclear@1 55 "Created", /* 201 */
nuclear@1 56 "Accepted", /* 202 */
nuclear@1 57 "Non-Authoritative Information", /* 203 */
nuclear@1 58 "No Content", /* 204 */
nuclear@1 59 "Reset Content", /* 205 */
nuclear@1 60 "Partial Content" /* 206 */
nuclear@1 61 };
nuclear@1 62
nuclear@1 63 /* HTTP 3xx message strings */
nuclear@1 64 const char *http_msg3xx[] = {
nuclear@1 65 "Multiple Choices", /* 300 */
nuclear@1 66 "Moved Permanently", /* 301 */
nuclear@1 67 "Found", /* 302 */
nuclear@1 68 "See Other", /* 303 */
nuclear@1 69 "Not Modified", /* 304 */
nuclear@1 70 "Use Proxy", /* 305 */
nuclear@1 71 "<unknown>", /* 306 is undefined? */
nuclear@1 72 "Temporary Redirect" /* 307 */
nuclear@1 73 };
nuclear@1 74
nuclear@1 75 /* HTTP 4xx error strings */
nuclear@1 76 const char *http_msg4xx[] = {
nuclear@1 77 "Bad Request", /* 400 */
nuclear@1 78 "Unauthorized", /* 401 */
nuclear@1 79 "What the Fuck?", /* 402 */
nuclear@1 80 "Forbidden", /* 403 */
nuclear@1 81 "Not Found", /* 404 */
nuclear@1 82 "Method Not Allowed", /* 405 */
nuclear@1 83 "Not Acceptable", /* 406 */
nuclear@1 84 "Proxy Authentication Required", /* 407 */
nuclear@1 85 "Request Time-out", /* 408 */
nuclear@1 86 "Conflict", /* 409 */
nuclear@1 87 "Gone", /* 410 */
nuclear@1 88 "Length Required", /* 411 */
nuclear@1 89 "Precondition Failed", /* 412 */
nuclear@1 90 "Request Entity Too Large", /* 413 */
nuclear@1 91 "Request-URI Too Large", /* 414 */
nuclear@1 92 "Unsupported Media Type", /* 415 */
nuclear@1 93 "Request range not satisfiable", /* 416 */
nuclear@1 94 "Expectation Failed" /* 417 */
nuclear@1 95 };
nuclear@1 96
nuclear@1 97 /* HTTP 5xx error strings */
nuclear@1 98 const char *http_msg5xx[] = {
nuclear@1 99 "Internal Server Error", /* 500 */
nuclear@1 100 "Not Implemented", /* 501 */
nuclear@1 101 "Bad Gateway", /* 502 */
nuclear@1 102 "Service Unavailable", /* 503 */
nuclear@1 103 "Gateway Time-out", /* 504 */
nuclear@1 104 "HTTP Version not supported" /* 505 */
nuclear@1 105 };
nuclear@1 106
nuclear@1 107 #endif /* HTTP_H_ */