From 5964c509a536a694e0f2b3d5daf6f74abcc291f2 Mon Sep 17 00:00:00 2001
From: Michael McVady <femtonaut@gmail.com>
Date: Mon, 2 Jan 2023 08:29:23 -0600
Subject: Hack in post_rq struct

---
 src/clog.c | 75 ++++++++++++++++++++++++++++++++++----------------------------
 1 file changed, 41 insertions(+), 34 deletions(-)

(limited to 'src')

diff --git a/src/clog.c b/src/clog.c
index 905236b..9230030 100644
--- a/src/clog.c
+++ b/src/clog.c
@@ -20,22 +20,25 @@ KORE_SECCOMP_FILTER("clog",
     KORE_SYSCALL_ALLOW(uname)
 )
 
-struct post_req {
+struct post_request {
 	struct http_request *req;
 	const char *resource;
 	// FIXME: use enum
 	unsigned int type; // 0 JSON; 1 HTML
+
+	// TODO
+	struct kore_buf *resp_buf;
 };
 
-void post_req_init(struct post_req *p);
+void post_request_init(struct post_request *p);
 
 int redirect(struct http_request *);
 
 int post(struct http_request *);
 int posts(struct http_request *);
 
-int render_posts_html(struct http_request *, const char *);
-int render_posts_json(struct http_request *, const char *);
+int render_posts_html(struct post_request *);
+int render_posts_json(struct post_request *);
 
 static void process_md_output(const MD_CHAR *, MD_SIZE size, void *);
 static int render_md(const char *, struct kore_buf *);
@@ -43,11 +46,12 @@ static int render_md(const char *, struct kore_buf *);
 static const char *database = "db";
 static const char *accept_json = "application/json";
 
-void post_req_init(struct post_req *p)
+void post_request_init(struct post_request *post_req)
 {
-	p->req = NULL;
-	p->resource = NULL;
-	p->type = 1;
+	post_req->req = NULL;
+	post_req->resource = NULL;
+	post_req->type = 1;
+	post_req->resp_buf = NULL;
 }
 
 int
@@ -66,11 +70,11 @@ post(struct http_request *req)
 
 	const char *accept = NULL;
 
-	struct post_req request;
+	struct post_request post_req;
 
-	post_req_init(&request);
+	post_request_init(&post_req);
 
-	request.req = req;
+	post_req.req = req;
 
 	err = http_request_header(req, "accept", &accept);
 	if (err == KORE_RESULT_OK)
@@ -78,22 +82,23 @@ post(struct http_request *req)
 		kore_log(LOG_DEBUG, "Accept: %s", accept);
 		if (strncmp(accept, accept_json, sizeof(*accept_json)) == 0)
 		{
-			request.type = 0;
+			post_req.type = 0;
 		}
 	}
 
-	request.resource = req->path + strlen("/posts/");
-	kore_log(LOG_DEBUG, "Resource /posts/%s", request.resource);
+	post_req.resource = req->path + strlen("/posts/");
+	kore_log(LOG_DEBUG, "Resource /posts/%s", post_req.resource);
 
-	if (request.type == 0)
+	if (post_req.type == 0)
 	{
-		return render_posts_json(request.req, request.resource);
+		(void) render_posts_json(&post_req);
 	}
 	else
 	{
-		return render_posts_html(request.req, request.resource);
+		(void) render_posts_html(&post_req);
 	}
 
+	return KORE_RESULT_OK;
 }
 
 int
@@ -103,11 +108,11 @@ posts(struct http_request *req)
 
 	const char *accept = NULL;
 
-	struct post_req request;
+	struct post_request post_req;
 
-	post_req_init(&request);
+	post_request_init(&post_req);
 
-	request.req = req;
+	post_req.req = req;
 
 	err = http_request_header(req, "accept", &accept);
 	if (err == KORE_RESULT_OK)
@@ -115,22 +120,24 @@ posts(struct http_request *req)
 		kore_log(LOG_DEBUG, "Accept: %s", accept);
 		if (strncmp(accept, accept_json, sizeof(*accept_json)) == 0)
 		{
-			request.type = 0;
+			post_req.type = 0;
 		}
 	}
 
-	if (request.type == 0)
+	if (post_req.type == 0)
 	{
-		return render_posts_json(request.req, request.resource);
+		err = render_posts_json(&post_req);
 	}
 	else
 	{
-		return render_posts_html(request.req, request.resource);
+		err = render_posts_html(&post_req);
 	}
+
+	return err;
 }
 
 int
-render_posts_html(struct http_request *req, const char *resource)
+render_posts_html(struct post_request *post_req)
 {
 	int err = 0;
 
@@ -166,7 +173,7 @@ render_posts_html(struct http_request *req, const char *resource)
 	}
 
 	// Query for posts, check for error.
-	if (resource)
+	if (post_req->resource)
 	{
 		// Query a post.
 		err = kore_pgsql_query_params(
@@ -176,7 +183,7 @@ render_posts_html(struct http_request *req, const char *resource)
 			"WHERE id = $1;",
 			0,  // return string data
 			1,  // param count
-			KORE_PGSQL_PARAM_TEXT(resource)
+			KORE_PGSQL_PARAM_TEXT(post_req->resource)
 		);
 	}
 	else
@@ -237,8 +244,8 @@ render_posts_html(struct http_request *req, const char *resource)
 out: ;
 
 	kore_buf_append(resp_buf, asset_index_end_html, asset_len_index_end_html);
-	http_response_header(req, "content-type", "text/html; charset=utf-8");
-	http_response(req, HTTP_STATUS_OK, resp_buf->data, resp_buf->offset);
+	http_response_header(post_req->req, "content-type", "text/html; charset=utf-8");
+	http_response(post_req->req, HTTP_STATUS_OK, resp_buf->data, resp_buf->offset);
 
 	kore_pgsql_cleanup(&sql);
 	kore_buf_free(resp_buf);
@@ -247,7 +254,7 @@ out: ;
 }
 
 int
-render_posts_json(struct http_request *req, const char *resource)
+render_posts_json(struct post_request *post_req)
 {
 	int err = 0;
 
@@ -273,7 +280,7 @@ render_posts_json(struct http_request *req, const char *resource)
 		goto out;
 	}
 
-	if (resource)
+	if (post_req->resource)
 	{
 		err = kore_pgsql_query_params(
 			&sql,
@@ -284,7 +291,7 @@ render_posts_json(struct http_request *req, const char *resource)
 			") row;",
 			0,  // string data
 			1,  // param count
-			KORE_PGSQL_PARAM_TEXT(resource)
+			KORE_PGSQL_PARAM_TEXT(post_req->resource)
 		);
 	}
 	else
@@ -321,8 +328,8 @@ render_posts_json(struct http_request *req, const char *resource)
 
 out: ;
 
-	http_response_header(req, "content-type", "application/json; charset=utf-8");
-	http_response(req, HTTP_STATUS_OK, resp_buf->data, resp_buf->offset);
+	http_response_header(post_req->req, "content-type", "application/json; charset=utf-8");
+	http_response(post_req->req, HTTP_STATUS_OK, resp_buf->data, resp_buf->offset);
 
 	kore_pgsql_cleanup(&sql);
 	kore_buf_free(resp_buf);
-- 
cgit v1.2.3