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;
|
char *tok, *ver, *num;
|
||||||
|
|
||||||
@ -97,7 +185,7 @@ void parse_request_line(char** line, http_request* request)
|
|||||||
request->version.minor = atoi(num);
|
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
|
// going to be using strtok here to split up the request
|
||||||
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
#include "headers.h"
|
||||||
|
|
||||||
#ifndef HTTP_H
|
#ifndef HTTP_H
|
||||||
#define HTTP_H
|
#define HTTP_H
|
||||||
|
|
||||||
@ -7,6 +9,28 @@ typedef enum {
|
|||||||
UNKNOWN,
|
UNKNOWN,
|
||||||
} http_method_t;
|
} 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 {
|
struct http_version {
|
||||||
int major;
|
int major;
|
||||||
int minor;
|
int minor;
|
||||||
@ -16,15 +40,34 @@ typedef struct {
|
|||||||
http_method_t method;
|
http_method_t method;
|
||||||
char* request_uri;
|
char* request_uri;
|
||||||
struct http_version version;
|
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;
|
} 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);
|
http_method_t str_to_http_method(char* input);
|
||||||
const char* http_method_to_str(http_method_t 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
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user