#include #include #include #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; }