Преглед на файлове

mastoapi: added deleting for posts.

I'm sure that I've done this before, but whatever.
grunfink преди 9 месеца
родител
ревизия
885ee3f5b9
променени са 1 файла, в които са добавени 35 реда и са изтрити 1 реда
  1. 35 1
      mastoapi.c

+ 35 - 1
mastoapi.c

@@ -3462,7 +3462,6 @@ int mastoapi_delete_handler(const xs_dict *req, const char *q_path,
                           char **body, int *b_size, char **ctype)
 {
     (void)p_size;
-    (void)body;
     (void)b_size;
     (void)ctype;
 
@@ -3535,6 +3534,41 @@ int mastoapi_delete_handler(const xs_dict *req, const char *q_path,
         else
             status = HTTP_STATUS_UNAUTHORIZED;
     }
+    else
+    if (xs_startswith(cmd, "/v1/statuses/")) {
+        if (logged_in) {
+            xs *l = xs_split(cmd, "/");
+            const char *p = xs_list_get(l, -1);
+            p = MID_TO_MD5(p);
+
+            xs *obj = NULL;
+            if (valid_status(object_get_by_md5(p, &obj))) {
+                const char *id = xs_dict_get(obj, "id");
+
+                if (xs_is_string(id) && xs_startswith(id, snac.actor)) {
+                    xs *out = mastoapi_status(&snac, obj);
+
+                    xs *msg = msg_delete(&snac, id);
+
+                    enqueue_message(&snac, msg);
+
+                    timeline_del(&snac, id);
+
+                    draft_del(&snac, id);
+
+                    schedule_del(&snac, id);
+
+                    snac_log(&snac, xs_fmt("deleted entry %s", id));
+
+                    *body = xs_json_dumps(out, 4);
+                    *ctype = "application/json";
+                    status = HTTP_STATUS_OK;
+                }
+            }
+        }
+        else
+            status = HTTP_STATUS_UNAUTHORIZED;
+    }
 
     /* user cleanup */
     if (logged_in)