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