From 6cb013634553e97cb7242bdb877626f4b8edab5e Mon Sep 17 00:00:00 2001 From: Neesergparajuli <neesergparajuli@this.com> Date: Sun, 15 Apr 2018 20:13:50 +1000 Subject: [PATCH] simple get request parser working, ignoring everything but the first line right now --- GETheader.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ GETheader.h | 25 ++++++++++++++++++++ sample | Bin 0 -> 9064 bytes server.h | 6 +++++ 4 files changed, 96 insertions(+) create mode 100644 GETheader.c create mode 100644 GETheader.h create mode 100755 sample create mode 100644 server.h diff --git a/GETheader.c b/GETheader.c new file mode 100644 index 0000000..7cf041c --- /dev/null +++ b/GETheader.c @@ -0,0 +1,65 @@ +#include "GETheader.h" +#include <stdio.h> +#include <string.h> + + + +int main(int argc, char const *argv[]) +{ + char getrequest[BUFFERSIZE]; + memset(getrequest, 0, BUFFERSIZE); + fread(getrequest, 1, BUFFERSIZE, stdin); + + struct GET_header header; + + parse_GET_request(getrequest, &header); + + printf("%s\n", header.filepath); + printf("%s\n", header.httpversion); + + + return 0; +} + +int parse_GET_request(char* message, struct GET_header* header){ + char workingcopy[BUFFERSIZE]; + char delimeter[6] = " \r\n\t\v"; + + strcpy(workingcopy, message); + + char *get; + + if((get = strtok(workingcopy, delimeter))==NULL){ + perror("NOT VALID"); + header->status = BADREQUEST; + return -1; + } + + if (strcmp(get, "GET") != 0) + { + perror("NOT VALID"); + header->status = BADREQUEST; + return -1; + } + + char *temp; + if((temp = strtok(NULL, delimeter)) == NULL){ + perror("NOT VALID"); + header->status = FILENOTFOUND; + return -1; + } + + strcpy(header->filepath, temp); + + + + + if((temp = strtok(NULL, delimeter)) == NULL){ + perror("NOT VALID"); + header->status = BADREQUEST; + return -1; + } + + strcpy(header->httpversion, temp); + +} diff --git a/GETheader.h b/GETheader.h new file mode 100644 index 0000000..4b7d512 --- /dev/null +++ b/GETheader.h @@ -0,0 +1,25 @@ +#ifndef GETheader +#define GETheader + +#define BUFFERSIZE 1000 +#define BADREQUEST 400 +#define FILENOTFOUND 404 + +struct GET_header +{ + char httpversion[10]; + int status; + char filepath[128]; + +}; + + +int parse_GET_request(char* message, struct GET_header* header); + + + + + + + +#endif \ No newline at end of file diff --git a/sample b/sample new file mode 100755 index 0000000000000000000000000000000000000000..90ae967dd8c8ad29b067d9a47f9f7361e88538d0 GIT binary patch literal 9064 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 literal 0 HcmV?d00001 diff --git a/server.h b/server.h new file mode 100644 index 0000000..decc240 --- /dev/null +++ b/server.h @@ -0,0 +1,6 @@ +#ifndef SERVER +#define SERVER + +char root[32]; + +#endif \ No newline at end of file -- GitLab