summaryrefslogtreecommitdiff
path: root/mastoapi.c
diff options
context:
space:
mode:
authorJames Seward <james@jamesoff.net>2024-01-11 13:38:08 +0000
committerJames Seward <james@jamesoff.net>2024-01-11 13:38:08 +0000
commitc3fb6bab77f35be6cda261f257b8731d38e5265f (patch)
tree683be057b3f1b659648e0fdecaca59955fc785ab /mastoapi.c
parentca27d0248a9244b71f6c44e8f1b598111b17e846 (diff)
Support DELETE for Mastodon subscriptions
While testing Mona, I noticed that after deleting my account entry for my snac server, Mona would repeatedly try to delete the subscription it thought it had created, resulting in many unhandled DELETE calls. This accepts the call and returns 200 for it, which makes Mona happy.
Diffstat (limited to 'mastoapi.c')
-rw-r--r--mastoapi.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/mastoapi.c b/mastoapi.c
index 5c89172..c1a889d 100644
--- a/mastoapi.c
+++ b/mastoapi.c
@@ -2484,6 +2484,22 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
}
+int mastoapi_delete_handler(const xs_dict *req, const char *q_path,
+ char **body, int *b_size, char **ctype) {
+
+ if (!xs_startswith(q_path, "/api/v1/") && !xs_startswith(q_path, "/api/v2/"))
+ return 0;
+
+ srv_debug(1, xs_fmt("mastoapi_delete_handler %s", q_path));
+ xs *cmd = xs_replace_n(q_path, "/api", "", 1);
+ if (xs_startswith(cmd, "/v1/push/subscription") || xs_startswith(cmd, "/v2/push/subscription")) { /** **/
+ // pretend we deleted it, since it doesn't exist anyway
+ return 200;
+ }
+ return 0;
+}
+
+
int mastoapi_put_handler(const xs_dict *req, const char *q_path,
const char *payload, int p_size,
char **body, int *b_size, char **ctype)