add http parser
This commit is contained in:
parent
7e8d7e1b11
commit
2e087254c9
@ -3,9 +3,46 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
HttpMethodGet,
|
||||||
|
HttpMethodPost,
|
||||||
|
} HttpMethod;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
HttpMethod method;
|
||||||
|
size_t path_index, path_length;
|
||||||
|
size_t content_length;
|
||||||
|
} HttpRequestHeader;
|
||||||
|
|
||||||
|
HttpRequestHeader parse_http_request_header(const char* message, size_t message_size)
|
||||||
|
{
|
||||||
|
size_t i = 0;
|
||||||
|
|
||||||
|
// parse method
|
||||||
|
HttpMethod method;
|
||||||
|
if (i + 3 < message_size && strncmp(&message[0], "GET", 3)) {
|
||||||
|
method = HttpMethodGet;
|
||||||
|
i += 3;
|
||||||
|
} else if (i + 4 < message_size && strncmp(&message[0], "POST", 4)) {
|
||||||
|
method = HttpMethodPost;
|
||||||
|
i += 4;
|
||||||
|
} else {
|
||||||
|
printf("error: header parse fail #1\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// skip space
|
||||||
|
i += 1;
|
||||||
|
if (i >= message_size) { }
|
||||||
|
|
||||||
|
return (HttpRequestHeader) { 0 };
|
||||||
|
}
|
||||||
|
|
||||||
const uint16_t port = 8000;
|
const uint16_t port = 8000;
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
4
backend/utils.h
Normal file
4
backend/utils.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#ifndef UTILS_H
|
||||||
|
#define UTILS_H
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user