summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar grunfink2024-01-11 17:46:15 +0000
committerGravatar grunfink2024-01-11 17:46:15 +0000
commit285fb589ff1727e61144f17f77cf275c3a5905ce (patch)
tree683be057b3f1b659648e0fdecaca59955fc785ab
parentAdded an unveil() call for "/tmp". (diff)
parentSupport DELETE for Mastodon subscriptions (diff)
downloadpenes-snac2-285fb589ff1727e61144f17f77cf275c3a5905ce.tar.gz
penes-snac2-285fb589ff1727e61144f17f77cf275c3a5905ce.tar.xz
penes-snac2-285fb589ff1727e61144f17f77cf275c3a5905ce.zip
Merge pull request 'Improve support for Mona iOS app' (#100) from jamesoff/snac2:monaapp-support into master
Reviewed-on: https://codeberg.org/grunfink/snac2/pulls/100
-rw-r--r--httpd.c8
-rw-r--r--mastoapi.c21
-rw-r--r--snac.h2
3 files changed, 31 insertions, 0 deletions
diff --git a/httpd.c b/httpd.c
index ecb64b4..4c6d985 100644
--- a/httpd.c
+++ b/httpd.c
@@ -344,6 +344,14 @@ void httpd_connection(FILE *f)
344 if (strcmp(method, "OPTIONS") == 0) { 344 if (strcmp(method, "OPTIONS") == 0) {
345 status = 200; 345 status = 200;
346 } 346 }
347 else
348 if (strcmp(method, "DELETE") == 0) {
349#ifndef NO_MASTODON_API
350 if (status == 0)
351 status = mastoapi_delete_handler(req, q_path,
352 &body, &b_size, &ctype);
353#endif
354 }
347 355
348 /* unattended? it's an error */ 356 /* unattended? it's an error */
349 if (status == 0) { 357 if (status == 0) {
diff --git a/mastoapi.c b/mastoapi.c
index d872c5d..c1a889d 100644
--- a/mastoapi.c
+++ b/mastoapi.c
@@ -1118,9 +1118,14 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
1118 acct = xs_dict_append(acct, "acct", xs_dict_get(snac1.config, "uid")); 1118 acct = xs_dict_append(acct, "acct", xs_dict_get(snac1.config, "uid"));
1119 acct = xs_dict_append(acct, "display_name", xs_dict_get(snac1.config, "name")); 1119 acct = xs_dict_append(acct, "display_name", xs_dict_get(snac1.config, "name"));
1120 acct = xs_dict_append(acct, "created_at", xs_dict_get(snac1.config, "published")); 1120 acct = xs_dict_append(acct, "created_at", xs_dict_get(snac1.config, "published"));
1121 acct = xs_dict_append(acct, "last_status_at", xs_dict_get(snac1.config, "published"));
1121 acct = xs_dict_append(acct, "note", xs_dict_get(snac1.config, "bio")); 1122 acct = xs_dict_append(acct, "note", xs_dict_get(snac1.config, "bio"));
1122 acct = xs_dict_append(acct, "url", snac1.actor); 1123 acct = xs_dict_append(acct, "url", snac1.actor);
1123 acct = xs_dict_append(acct, "header", ""); 1124 acct = xs_dict_append(acct, "header", "");
1125 acct = xs_dict_append(acct, "header_static", "");
1126 acct = xs_dict_append(acct, "locked", xs_stock_false);
1127 // FIXME: check value of "type" to set this correctly?
1128 acct = xs_dict_append(acct, "bot", xs_stock_false);
1124 1129
1125 xs *src = xs_json_loads("{\"privacy\":\"public\"," 1130 xs *src = xs_json_loads("{\"privacy\":\"public\","
1126 "\"sensitive\":false,\"fields\":[],\"note\":\"\"}"); 1131 "\"sensitive\":false,\"fields\":[],\"note\":\"\"}");
@@ -2479,6 +2484,22 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
2479} 2484}
2480 2485
2481 2486
2487int mastoapi_delete_handler(const xs_dict *req, const char *q_path,
2488 char **body, int *b_size, char **ctype) {
2489
2490 if (!xs_startswith(q_path, "/api/v1/") && !xs_startswith(q_path, "/api/v2/"))
2491 return 0;
2492
2493 srv_debug(1, xs_fmt("mastoapi_delete_handler %s", q_path));
2494 xs *cmd = xs_replace_n(q_path, "/api", "", 1);
2495 if (xs_startswith(cmd, "/v1/push/subscription") || xs_startswith(cmd, "/v2/push/subscription")) { /** **/
2496 // pretend we deleted it, since it doesn't exist anyway
2497 return 200;
2498 }
2499 return 0;
2500}
2501
2502
2482int mastoapi_put_handler(const xs_dict *req, const char *q_path, 2503int mastoapi_put_handler(const xs_dict *req, const char *q_path,
2483 const char *payload, int p_size, 2504 const char *payload, int p_size,
2484 char **body, int *b_size, char **ctype) 2505 char **body, int *b_size, char **ctype)
diff --git a/snac.h b/snac.h
index 5843c5a..e960d0d 100644
--- a/snac.h
+++ b/snac.h
@@ -312,6 +312,8 @@ int oauth_post_handler(const xs_dict *req, const char *q_path,
312 char **body, int *b_size, char **ctype); 312 char **body, int *b_size, char **ctype);
313int mastoapi_get_handler(const xs_dict *req, const char *q_path, 313int mastoapi_get_handler(const xs_dict *req, const char *q_path,
314 char **body, int *b_size, char **ctype); 314 char **body, int *b_size, char **ctype);
315int mastoapi_delete_handler(const xs_dict *req, const char *q_path,
316 char **body, int *b_size, char **ctype);
315int mastoapi_post_handler(const xs_dict *req, const char *q_path, 317int mastoapi_post_handler(const xs_dict *req, const char *q_path,
316 const char *payload, int p_size, 318 const char *payload, int p_size,
317 char **body, int *b_size, char **ctype); 319 char **body, int *b_size, char **ctype);