From 353e393f4de68a209f2d454ca62516e180a3f54a Mon Sep 17 00:00:00 2001 From: default Date: Sat, 8 Apr 2023 06:09:05 +0200 Subject: [PATCH] New file mastoapi.c. --- Makefile | 2 +- httpd.c | 4 ++++ mastoapi.c | 24 ++++++++++++++++++++++++ snac.h | 3 +++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 mastoapi.c 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 @@ -185,6 +185,10 @@ void httpd_connection(FILE *f) status = activitypub_post_handler(req, q_path, 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);