diff options
-rw-r--r-- | http.c | 14 | ||||
-rw-r--r-- | http.h | 2 | ||||
-rw-r--r-- | plop.c | 4 |
3 files changed, 18 insertions, 2 deletions
@@ -82,6 +82,20 @@ int parse_request(const int fd, struct request * const request) return -1; // TODO: Handle errors properly } + for (int i = 0; i < NUMBER_OF_METHODS; ++i) + { + if (0 == strncmp(method_str[i], buffer, strlen(method_str[i]))) + { + request->method = i; + break; + } + + if (NUMBER_OF_METHODS - 1 == i) + { + // TODO: 501 Not Implemented + } + } + request->body = malloc(length + 1); memcpy(request->body, buffer, length); request->body[length] = 0; @@ -10,6 +10,8 @@ enum method METHOD_DELETE, METHOD_OPTIONS, METHOD_PATCH, + NUMBER_OF_METHODS, + METHOD_INVALID, }; struct request @@ -86,10 +86,10 @@ int handle_client(struct pollfd * pfd, const int shift_by) return -1; // TODO: Handle errors properly } - struct request request = {0}; + struct request request = {METHOD_INVALID, NULL}; parse_request(pfd->fd, &request); - if (-1 == respond_with_body(pfd->fd, STATUS_OK, request.body)) + if (-1 == respond_with_body(pfd->fd, STATUS_OK, method_str[request.method])) { // TODO: Handle errors properly } |