bunkum

an old and silly c99 web server with some fun features
Log | Files | Refs | README

request.h (1078B)


      1 #ifndef REQUEST_H
      2 #define REQUEST_H
      3 
      4 #include "../utils/vec.h"
      5 #include "../utils/hashmap.h"
      6 
      7 enum http_method {
      8     GET,
      9     HEAD,
     10     POST,
     11     PUT,
     12     DELETE,
     13     CONNECT,
     14     OPTIONS,
     15     TRACE,
     16 };
     17 const char* method_name(enum http_method m);
     18 enum http_method method_enum(char* p);
     19 
     20 #define MAX_PATH_LEN 128
     21 #define MAX_HEADER_NAME 32
     22 #define MAX_HEADER_VALUE 512
     23 #define MAX_MIMETYPE_LEN 32
     24 #define MAX_MIME_SUBTYPE_LEN 32
     25 
     26 enum mime_disctype {
     27     MIME_APPLICATION,
     28     MIME_AUDIO,
     29     MIME_EXAMPLE,
     30     MIME_FONT,
     31     MIME_IMAGE,
     32     MIME_MODEL,
     33     MIME_TEXT,
     34     MIME_VIDEO,
     35 };
     36 
     37 struct mime_type {
     38     enum mime_disctype type;
     39     char subtype[MAX_MIME_SUBTYPE_LEN];
     40 };
     41 
     42 struct req_mimetype {
     43     float q;
     44     char item[MAX_MIMETYPE_LEN];
     45 };
     46 
     47 vec_t hdr_parse_accept(char* val);
     48 
     49 typedef struct request {
     50     char* buf;
     51     size_t bufsize;
     52     enum http_method method;
     53     char path[MAX_PATH_LEN];
     54     float ver;
     55     hashmap_t headers;
     56 } request_t;
     57 
     58 request_t req_new(char* reqbuf, size_t bufsize);
     59 int req_parse(request_t* req);
     60 void req_free(request_t* req);
     61 
     62 #endif