commit 885ee3f

grunfink  ·  2025-10-10 19:17:54 +0000 UTC
parent 7d942d4
mastoapi: added deleting for posts.

I'm sure that I've done this before, but whatever.
1 files changed,  +35, -1
+35, -1
 1@@ -3462,7 +3462,6 @@ int mastoapi_delete_handler(const xs_dict *req, const char *q_path,
 2                           char **body, int *b_size, char **ctype)
 3 {
 4     (void)p_size;
 5-    (void)body;
 6     (void)b_size;
 7     (void)ctype;
 8 
 9@@ -3535,6 +3534,41 @@ int mastoapi_delete_handler(const xs_dict *req, const char *q_path,
10         else
11             status = HTTP_STATUS_UNAUTHORIZED;
12     }
13+    else
14+    if (xs_startswith(cmd, "/v1/statuses/")) {
15+        if (logged_in) {
16+            xs *l = xs_split(cmd, "/");
17+            const char *p = xs_list_get(l, -1);
18+            p = MID_TO_MD5(p);
19+
20+            xs *obj = NULL;
21+            if (valid_status(object_get_by_md5(p, &obj))) {
22+                const char *id = xs_dict_get(obj, "id");
23+
24+                if (xs_is_string(id) && xs_startswith(id, snac.actor)) {
25+                    xs *out = mastoapi_status(&snac, obj);
26+
27+                    xs *msg = msg_delete(&snac, id);
28+
29+                    enqueue_message(&snac, msg);
30+
31+                    timeline_del(&snac, id);
32+
33+                    draft_del(&snac, id);
34+
35+                    schedule_del(&snac, id);
36+
37+                    snac_log(&snac, xs_fmt("deleted entry %s", id));
38+
39+                    *body = xs_json_dumps(out, 4);
40+                    *ctype = "application/json";
41+                    status = HTTP_STATUS_OK;
42+                }
43+            }
44+        }
45+        else
46+            status = HTTP_STATUS_UNAUTHORIZED;
47+    }
48 
49     /* user cleanup */
50     if (logged_in)