parent
6e9f86b4ae
commit
475e648feb
11 changed files with 345 additions and 0 deletions
|
@ -248,6 +248,28 @@ U0 @slon_admin_delete_account(SlonHttpSession* session)
|
|||
session->send(SLON_EMPTY_JSON_OBJECT);
|
||||
}
|
||||
|
||||
U0 @slon_admin_delete_announcement(SlonHttpSession* session)
|
||||
{
|
||||
SLON_SCRATCH_BUFFER_AND_REQUEST_JSON
|
||||
no_warn scratch_buffer;
|
||||
|
||||
if (!request_json->@("id"))
|
||||
return;
|
||||
I64 i;
|
||||
JsonArray* announcements = db->a("announcements");
|
||||
JsonObject* announcement = NULL;
|
||||
for (i = 0; i < announcements->length; i++) {
|
||||
announcement = announcements->o(i);
|
||||
if (announcement && !StrICmp(request_json->@("id"), announcement->@("id"))) {
|
||||
AdamLog("deleting announcement %d\n", i);
|
||||
announcements->remove(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@slon_db_save_announcements_to_disk;
|
||||
session->send(SLON_EMPTY_JSON_OBJECT);
|
||||
}
|
||||
|
||||
U0 @slon_admin_new_account(SlonHttpSession* session)
|
||||
{
|
||||
SLON_SCRATCH_BUFFER_AND_REQUEST_JSON
|
||||
|
@ -262,6 +284,38 @@ U0 @slon_admin_new_account(SlonHttpSession* session)
|
|||
}
|
||||
}
|
||||
|
||||
U0 @slon_admin_new_announcement(SlonHttpSession* session)
|
||||
{
|
||||
SLON_SCRATCH_BUFFER_AND_REQUEST_JSON
|
||||
|
||||
if (request_json->@("content")) {
|
||||
U8* id = @slon_api_generate_unique_id(session);
|
||||
U8* timestamp = @slon_api_timestamp_from_cdate(session, Now);
|
||||
JsonObject* announcement = Json.CreateObject(slon_db_mem_task);
|
||||
announcement->set("id", id, JSON_STRING);
|
||||
announcement->set("content", request_json->@("content"), JSON_STRING);
|
||||
announcement->set("starts_at", NULL, JSON_NULL);
|
||||
announcement->set("ends_at", NULL, JSON_NULL);
|
||||
announcement->set("all_day", FALSE, JSON_BOOLEAN);
|
||||
announcement->set("published_at", timestamp, JSON_STRING);
|
||||
announcement->set("updated_at", timestamp, JSON_STRING);
|
||||
announcement->set("read", FALSE, JSON_BOOLEAN);
|
||||
announcement->set("read_users", Json.CreateArray(slon_db_mem_task), JSON_ARRAY);
|
||||
announcement->set("mentions", SLON_EMPTY_JSON_ARRAY, JSON_ARRAY);
|
||||
announcement->set("statuses", SLON_EMPTY_JSON_ARRAY, JSON_ARRAY);
|
||||
announcement->set("tags", Json.CreateArray(slon_db_mem_task), JSON_ARRAY);
|
||||
announcement->set("emojis", Json.CreateArray(slon_db_mem_task), JSON_ARRAY);
|
||||
// Internally, "reactions" is { "emoji": [ "account_id", "account_id", ... ]}
|
||||
// This is presented to the client as: "reactions": [ { "name": "emoji", "count": xxx, "me": true/false }, ... ]
|
||||
announcement->set("reactions", Json.CreateObject(slon_db_mem_task), JSON_OBJECT);
|
||||
db->a("announcements")->append(announcement);
|
||||
@slon_db_save_announcements_to_disk;
|
||||
@slon_free(session, id);
|
||||
@slon_free(session, timestamp);
|
||||
}
|
||||
session->send(SLON_EMPTY_JSON_OBJECT);
|
||||
}
|
||||
|
||||
U0 @slon_admin_manage_accounts(SlonHttpSession* session)
|
||||
{
|
||||
SLON_SCRATCH_BUFFER_AND_REQUEST_JSON
|
||||
|
@ -324,14 +378,26 @@ U0 @slon_admin_server_get(SlonHttpSession* session)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!StrICmp("/delete/announcement", session->path())) {
|
||||
@slon_admin_delete_announcement(session);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!StrICmp("/manage/accounts", session->path())) {
|
||||
@slon_admin_manage_accounts(session);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!StrICmp("/manage/announcements", session->path())) {
|
||||
session->send(db->a("announcements"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!StrICmp("/manage/instance", session->path())) {
|
||||
session->send(db->o("instance"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!StrICmp("/manage/settings", session->path())) {
|
||||
session->send(db->o("settings"));
|
||||
return;
|
||||
|
@ -395,6 +461,11 @@ U0 @slon_admin_server_post(SlonHttpSession* session)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!StrICmp("/new/announcement", session->path())) {
|
||||
@slon_admin_new_announcement(session);
|
||||
return;
|
||||
}
|
||||
|
||||
session->status(404);
|
||||
}
|
||||
|
||||
|
|
|
@ -645,6 +645,7 @@ U0 @slon_http_handle_delete_request(SlonHttpSession* session)
|
|||
|
||||
/* clang-format off */
|
||||
|
||||
#include "Endpoints/Delete/Announcements";
|
||||
#include "Endpoints/Delete/Statuses";
|
||||
|
||||
/* clang-format on */
|
||||
|
@ -664,6 +665,7 @@ U0 @slon_http_handle_get_request(SlonHttpSession* session)
|
|||
/* clang-format off */
|
||||
|
||||
#include "Endpoints/Get/Accounts";
|
||||
#include "Endpoints/Get/Announcements";
|
||||
#include "Endpoints/Get/ActivityPub";
|
||||
#include "Endpoints/Get/Blocks";
|
||||
#include "Endpoints/Get/Bookmarks";
|
||||
|
@ -735,6 +737,7 @@ U0 @slon_http_handle_post_request(SlonHttpSession* session)
|
|||
/* clang-format off */
|
||||
|
||||
#include "Endpoints/Post/Accounts";
|
||||
#include "Endpoints/Post/Announcements";
|
||||
#include "Endpoints/Post/ActivityPub";
|
||||
#include "Endpoints/Post/Apps";
|
||||
#include "Endpoints/Post/Markers";
|
||||
|
@ -763,6 +766,7 @@ U0 @slon_http_handle_put_request(SlonHttpSession* session)
|
|||
|
||||
/* clang-format off */
|
||||
|
||||
#include "Endpoints/Put/Announcements";
|
||||
#include "Endpoints/Put/Media";
|
||||
|
||||
/* clang-format on */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue