diff options
Diffstat (limited to 'src/molerat/request.c')
-rwxr-xr-x | src/molerat/request.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/molerat/request.c b/src/molerat/request.c new file mode 100755 index 0000000..1d59a09 --- /dev/null +++ b/src/molerat/request.c @@ -0,0 +1,34 @@ +#include <ncurses.h> +#include <stdlib.h> +#include <string.h> + +#include "request.h" +#include "url.h" + +char *get_request_kind(enum RequestKind kind) { + switch (kind) { + case GET: + return "get"; + case PUT: + return "put"; + case DEL: + return "del"; + } +} + +char *request_to_string(struct request *req) { + int len = sizeof(struct request) + + 6; // +1 for null terminator +5 for request whitespace + + char *buf = malloc(len); + + char *kind = get_request_kind(req->kind); + char *host = req->url.host != NULL ? req->url.host : ""; + char *path = req->url.path != NULL ? req->url.path : ""; + char *query = req->url.query != NULL ? req->url.query : ""; + char *fragment = req->url.fragment != NULL ? req->url.fragment : ""; + + snprintf(buf, len, "%s %s%s%s%s\r\n\r\n", kind, host, path, query, fragment); + + return buf; +} |