From 07be3721c10e96f05c1b18ca3b5c5a151e331e21 Mon Sep 17 00:00:00 2001 From: default Date: Sat, 12 Aug 2023 21:46:54 +0200 Subject: [PATCH] Some mastoapi tweaks to support the semaphore.social web client. --- httpd.c | 12 ++++++++---- mastoapi.c | 12 ++++++++++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/httpd.c b/httpd.c index 3fafeb0..1145abd 100644 --- a/httpd.c +++ b/httpd.c @@ -153,7 +153,7 @@ void httpd_connection(FILE *f) d_char *body = NULL; int b_size = 0; char *ctype = NULL; - xs *headers = NULL; + xs *headers = xs_dict_new(); xs *q_path = NULL; xs *payload = NULL; xs *etag = NULL; @@ -232,9 +232,10 @@ void httpd_connection(FILE *f) #endif } - - /* let's go */ - headers = xs_dict_new(); + else + if (strcmp(method, "OPTIONS") == 0) { + status = 200; + } /* unattended? it's an error */ if (status == 0) { @@ -275,6 +276,9 @@ void httpd_connection(FILE *f) if (strcmp(method, "HEAD") == 0) body = xs_free(body); + headers = xs_dict_append(headers, "access-control-allow-origin", "*"); + headers = xs_dict_append(headers, "access-control-allow-headers", "*"); + xs_httpd_response(f, status, headers, body, b_size); fclose(f); diff --git a/mastoapi.c b/mastoapi.c index 2acef04..172d03a 100644 --- a/mastoapi.c +++ b/mastoapi.c @@ -11,6 +11,7 @@ #include "xs_glob.h" #include "xs_set.h" #include "xs_random.h" +#include "xs_httpd.h" #include "snac.h" @@ -233,6 +234,11 @@ int oauth_post_handler(const xs_dict *req, const char *q_path, if (i_ctype && xs_startswith(i_ctype, "application/json")) args = xs_json_loads(payload); + else + if (i_ctype && xs_startswith(i_ctype, "application/x-www-form-urlencoded") && payload) { + xs *upl = xs_url_dec(payload); + args = xs_url_vars(upl); + } else args = xs_dup(xs_dict_get(req, "p_vars")); @@ -954,6 +960,10 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path, acct = xs_dict_append(acct, "url", snac1.actor); acct = xs_dict_append(acct, "header", ""); + xs *src = xs_json_loads("{\"privacy\":\"public\"," + "\"sensitive\":false,\"fields\":[],\"note\":\"\"}"); + acct = xs_dict_append(acct, "source", src); + xs *avatar = NULL; char *av = xs_dict_get(snac1.config, "avatar"); @@ -1458,8 +1468,6 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path, ins = xs_dict_append(ins, "languages", l1); xs *d1 = xs_dict_new(); - xs *wss = xs_replace(srv_baseurl, "https:", "wss:"); - d1 = xs_dict_append(d1, "streaming_api", wss); ins = xs_dict_append(ins, "urls", d1); xs *z = xs_number_new(0);