summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordefault <nobody@localhost>2023-04-08 06:09:05 +0200
committerdefault <nobody@localhost>2023-04-08 06:09:05 +0200
commit353e393f4de68a209f2d454ca62516e180a3f54a (patch)
tree39c03f8abc377244aa06dc11d18d80b374f224a6
parent74817a4552e41a34644ec869c6ff7578854fac74 (diff)
New file mastoapi.c.
-rw-r--r--Makefile2
-rw-r--r--httpd.c4
-rw-r--r--mastoapi.c24
-rw-r--r--snac.h3
4 files changed, 32 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 3583001..05ddfc7 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@ CFLAGS?=-g -Wall
all: snac
snac: snac.o main.o data.o http.o httpd.o webfinger.o \
- activitypub.o html.o utils.o format.o upgrade.o
+ activitypub.o html.o utils.o format.o upgrade.o mastoapi.o
$(CC) $(CFLAGS) -L/usr/local/lib *.o -lcurl -lcrypto -pthread $(LDFLAGS) -o $@
.c.o:
diff --git a/httpd.c b/httpd.c
index ec7a79f..183e194 100644
--- a/httpd.c
+++ b/httpd.c
@@ -186,6 +186,10 @@ void httpd_connection(FILE *f)
payload, p_size, &body, &b_size, &ctype);
if (status == 0)
+ status = mastoapi_post_handler(req, q_path,
+ payload, p_size, &body, &b_size, &ctype);
+
+ if (status == 0)
status = html_post_handler(req, q_path,
payload, p_size, &body, &b_size, &ctype);
}
diff --git a/mastoapi.c b/mastoapi.c
new file mode 100644
index 0000000..1e4e309
--- /dev/null
+++ b/mastoapi.c
@@ -0,0 +1,24 @@
+/* snac - A simple, minimalistic ActivityPub instance */
+/* copyright (c) 2022 - 2023 grunfink / MIT license */
+
+#include "xs.h"
+#include "xs_encdec.h"
+#include "xs_json.h"
+#include "xs_time.h"
+
+#include "snac.h"
+
+int mastoapi_post_handler(xs_dict *req, char *q_path, char *payload, int p_size,
+ char **body, int *b_size, char **ctype)
+{
+ int status = 404;
+
+ if (!xs_startswith(q_path, "/api/v1/"))
+ return 0;
+
+ xs *j = xs_json_dumps_pp(req, 4);
+ printf("%s\n", j);
+ printf("%s\n", payload);
+
+ return status;
+}
diff --git a/snac.h b/snac.h
index 6477040..b0ff33c 100644
--- a/snac.h
+++ b/snac.h
@@ -223,3 +223,6 @@ int resetpwd(snac *snac);
int job_fifo_ready(void);
void job_post(const xs_val *job, int urgent);
void job_wait(xs_val **job);
+
+int mastoapi_post_handler(xs_dict *req, char *q_path, char *payload, int p_size,
+ char **body, int *b_size, char **ctype);