added status codes
This commit is contained in:
parent
986290f6de
commit
97d970c0cd
@ -1,3 +0,0 @@
|
||||
#include "include/headers.h"
|
||||
|
||||
|
92
src/http.c
92
src/http.c
@ -44,7 +44,95 @@ const char* http_method_to_str(http_method_t input)
|
||||
}
|
||||
}
|
||||
|
||||
void parse_request_line(char** line, http_request* request)
|
||||
const char* http_status_code_to_str(http_status_code_t code)
|
||||
{
|
||||
switch(code) {
|
||||
case HTTP100:
|
||||
return "Continue";
|
||||
case HTTP101:
|
||||
return "Switching Protocols";
|
||||
case HTTP200:
|
||||
return "OK";
|
||||
case HTTP201:
|
||||
return "Created";
|
||||
case HTTP202:
|
||||
return "Accepted";
|
||||
case HTTP203:
|
||||
return "Non-Authoritative Information";
|
||||
case HTTP204:
|
||||
return "No Content";
|
||||
case HTTP205:
|
||||
return "Reset Content";
|
||||
case HTTP206:
|
||||
return "Partial Content";
|
||||
case HTTP300:
|
||||
return "Multiple Choices";
|
||||
case HTTP301:
|
||||
return "Moved Permanently";
|
||||
case HTTP302:
|
||||
return "Found";
|
||||
case HTTP303:
|
||||
return "See Other";
|
||||
case HTTP304:
|
||||
return "Not Modified";
|
||||
case HTTP305:
|
||||
return "Use Proxy";
|
||||
case HTTP307:
|
||||
return "Temporary Redirect";
|
||||
case HTTP400:
|
||||
return "Bad Request";
|
||||
case HTTP401:
|
||||
return "Unauthorized";
|
||||
case HTTP402:
|
||||
return "Payment Required";
|
||||
case HTTP403:
|
||||
return "Forbidden";
|
||||
case HTTP404:
|
||||
return "Not Found";
|
||||
case HTTP405:
|
||||
return "Method Not Allowed";
|
||||
case HTTP406:
|
||||
return "Not Acceptable";
|
||||
case HTTP407:
|
||||
return "Proxy Authentication Required";
|
||||
case HTTP408:
|
||||
return "Request Time-out";
|
||||
case HTTP409:
|
||||
return "Conflict";
|
||||
case HTTP410:
|
||||
return "Gone";
|
||||
case HTTP411:
|
||||
return "Length Required";
|
||||
case HTTP412:
|
||||
return "Precondition Failed";
|
||||
case HTTP413:
|
||||
return "Request Entity Too Large";
|
||||
case HTTP414:
|
||||
return "Request-URI Too Large";
|
||||
case HTTP415:
|
||||
return "Unsupported Media Type";
|
||||
case HTTP416:
|
||||
return "Requested range not satisfiable";
|
||||
case HTTP417:
|
||||
return "Expectation Failed";
|
||||
case HTTP500:
|
||||
return "Internal Server Error";
|
||||
case HTTP501:
|
||||
return "Not Implemented";
|
||||
case HTTP502:
|
||||
return "Bad Gateway";
|
||||
case HTTP503:
|
||||
return "Service Unavailable";
|
||||
case HTTP504:
|
||||
return "Gateway Time-out";
|
||||
case HTTP505:
|
||||
return "HTTP Version not supported";
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
}
|
||||
}
|
||||
|
||||
void parse_request_line(char** line, http_request_line* request)
|
||||
{
|
||||
char *tok, *ver, *num;
|
||||
|
||||
@ -97,7 +185,7 @@ void parse_request_line(char** line, http_request* request)
|
||||
request->version.minor = atoi(num);
|
||||
}
|
||||
|
||||
void parse_http_request(char** buffer, http_request* request)
|
||||
void parse_http_request(char** buffer, http_request_line* request)
|
||||
{
|
||||
// going to be using strtok here to split up the request
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
#include "headers.h"
|
||||
|
||||
#ifndef HTTP_H
|
||||
#define HTTP_H
|
||||
|
||||
@ -7,6 +9,28 @@ typedef enum {
|
||||
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;
|
||||
@ -16,15 +40,34 @@ 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 {
|
||||
struct http_request_line;
|
||||
struct general_headers;
|
||||
struct requests_headers;
|
||||
} http_request;
|
||||
|
||||
typedef struct {
|
||||
http_status_line status;
|
||||
struct general_headers general;
|
||||
struct response_headers response;
|
||||
} http_response;
|
||||
|
||||
|
||||
http_method_t str_to_http_method(char* input);
|
||||
const char* http_method_to_str(http_method_t input);
|
||||
|
||||
void parse_request_line(char** line, http_request* request);
|
||||
const char* http_status_code_to_str(http_status_code_t code);
|
||||
|
||||
void parse_http_request(char** buffer, http_request* request);
|
||||
void parse_request_line(char** line, http_request_line* request);
|
||||
|
||||
void parse_http_request(char** buffer, http_request_line* request);
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user