summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--httpd.c8
-rw-r--r--mastoapi.c16
-rw-r--r--snac.h2
3 files changed, 26 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)
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);