diff --git a/GETheader.c b/GETheader.c new file mode 100644 index 0000000000000000000000000000000000000000..7cf041c77e54582a701975bbba0d17d346bc1a33 --- /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 0000000000000000000000000000000000000000..4b7d51285aa5b9c46592ef2455b785f2826f7f77 --- /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 Binary files /dev/null and b/sample differ diff --git a/server.h b/server.h new file mode 100644 index 0000000000000000000000000000000000000000..decc240ebe946a64eefc218d941825dac3edeb77 --- /dev/null +++ b/server.h @@ -0,0 +1,6 @@ +#ifndef SERVER +#define SERVER + +char root[32]; + +#endif \ No newline at end of file