Slon/Api/{V1,V2}/Media: Implement PUT /api/v1/media, POST /api/v2/media

This commit is contained in:
Alec Murphy 2025-03-01 19:46:13 -05:00
parent 95aecb9fb1
commit b104551bbd
9 changed files with 284 additions and 3 deletions

View file

@ -256,6 +256,7 @@ U0 @slon_api_v1_statuses_post(SlonHttpSession* session)
// IceCubesApp lets us post with +: media_attachments, replies_count, spoiler_text, sensitive
JsonObject* status = Json.CreateObject();
JsonArray* media_attachments = NULL;
status->set("id", id, JSON_STRING);
status->set("created_at", created_at, JSON_STRING);
status->set("content", request_json->@("status"), JSON_STRING);
@ -269,7 +270,19 @@ U0 @slon_api_v1_statuses_post(SlonHttpSession* session)
status->set("emojis", SLON_EMPTY_JSON_ARRAY, JSON_ARRAY);
status->set("tags", SLON_EMPTY_JSON_ARRAY, JSON_ARRAY);
status->set("mentions", SLON_EMPTY_JSON_ARRAY, JSON_ARRAY);
status->set("media_attachments", SLON_EMPTY_JSON_ARRAY, JSON_ARRAY);
if (request_json->@("media_ids") && request_json->a("media_ids")->length) {
I64 i;
media_attachments = Json.CreateArray();
for (i = 0; i < request_json->a("media_ids")->length; i++) {
U8* media_id = request_json->a("media_ids")->@(i);
if (media_id && db->o("media")->o(media_id)) {
media_attachments->append(Json.CreateItem(db->o("media")->o(media_id), JSON_OBJECT));
}
}
status->set("media_attachments", media_attachments, JSON_ARRAY);
} else {
status->set("media_attachments", SLON_EMPTY_JSON_ARRAY, JSON_ARRAY);
}
status->set("replies_count", 0, JSON_NUMBER);
status->set("spoiler_text", "", JSON_STRING);
status->set("sensitive", sensitive, JSON_BOOLEAN);
@ -292,6 +305,9 @@ U0 @slon_api_v1_statuses_post(SlonHttpSession* session)
session->send(status);
if (media_attachments) {
Json.Delete(media_attachments);
}
Json.Delete(status_app);
Json.Delete(account_object);
Json.Delete(app_object);