84 lines
1.8 KiB
C
84 lines
1.8 KiB
C
#include "headers.h"
|
|
|
|
#ifndef HTTP_H
|
|
#define HTTP_H
|
|
|
|
typedef enum {
|
|
GET,
|
|
HEAD,
|
|
UNKNOWN,
|
|
} http_method_t;
|
|
|
|
typedef enum {
|
|
HTTP100 = 100,
|
|
HTTP101,
|
|
HTTP200 = 200,
|
|
HTTP201, HTTP202, HTTP203,
|
|
HTTP204, HTTP205, HTTP206,
|
|
HTTP300 = 300,
|
|
HTTP301, HTTP302, HTTP303,
|
|
HTTP304, HTTP305,
|
|
HTTP307 = 307,
|
|
HTTP400 = 400,
|
|
HTTP401, HTTP402, HTTP403,
|
|
HTTP404, HTTP405, HTTP406,
|
|
HTTP407, HTTP408, HTTP409,
|
|
HTTP410, HTTP411, HTTP412,
|
|
HTTP413, HTTP414, HTTP415,
|
|
HTTP416, HTTP417,
|
|
HTTP500 = 500,
|
|
HTTP501, HTTP502, HTTP503,
|
|
HTTP504, HTTP505
|
|
} http_status_code_t;
|
|
|
|
struct http_version {
|
|
int major;
|
|
int minor;
|
|
};
|
|
|
|
typedef struct {
|
|
http_method_t method;
|
|
char* request_uri;
|
|
struct http_version version;
|
|
} http_request_line;
|
|
|
|
typedef struct {
|
|
struct http_version version;
|
|
http_status_code_t status_code;
|
|
const char* reason_phrase;
|
|
} http_status_line;
|
|
|
|
typedef struct {
|
|
http_request_line request_line;
|
|
struct general_headers general_headers;
|
|
struct request_headers request_headers;
|
|
} http_request;
|
|
|
|
typedef struct {
|
|
http_status_line status;
|
|
struct general_headers general_headers;
|
|
struct response_headers response_headers;
|
|
char* message_body;
|
|
} http_response;
|
|
|
|
|
|
http_method_t str_to_http_method(char* input);
|
|
const char* http_method_to_str(http_method_t input);
|
|
|
|
const char* http_status_code_to_str(http_status_code_t code);
|
|
|
|
void parse_request_line(char** line, http_request_line* request);
|
|
|
|
void init_general_headers(struct general_headers* headers);
|
|
void init_http_request(http_request* request);
|
|
void init_http_response(http_response* response);
|
|
|
|
void free_http_request(http_request* request);
|
|
void free_http_response(http_response* response);
|
|
|
|
void parse_http_request(char** buffer, http_request* request);
|
|
|
|
void create_http_response(http_request* request, http_response* response);
|
|
|
|
#endif
|