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) if (strcmp(method, "OPTIONS") == 0) { status = 200; } + else + if (strcmp(method, "DELETE") == 0) { +#ifndef NO_MASTODON_API + if (status == 0) + status = mastoapi_delete_handler(req, q_path, + &body, &b_size, &ctype); +#endif + } /* unattended? it's an error */ if (status == 0) { 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) 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, char **body, int *b_size, char **ctype); int mastoapi_get_handler(const xs_dict *req, const char *q_path, char **body, int *b_size, char **ctype); +int mastoapi_delete_handler(const xs_dict *req, const char *q_path, + char **body, int *b_size, char **ctype); int mastoapi_post_handler(const xs_dict *req, const char *q_path, const char *payload, int p_size, char **body, int *b_size, char **ctype);