Everywhere: Update JSON API

This commit is contained in:
Alec Murphy 2025-03-09 19:39:44 -04:00
parent 6a0ecc2bd2
commit d5a09373e4
15 changed files with 230 additions and 243 deletions

View file

@ -10,24 +10,23 @@ U0 @slon_nodeinfo(SlonHttpSession* session)
U0 @slon_nodeinfo_20(SlonHttpSession* session)
{
JsonObject* nodeinfo = Json.CreateObject();
JsonObject* nodeinfo = Json.CreateObject(slon_mem_task);
nodeinfo->set("version", "2.0", JSON_STRING);
nodeinfo->set("software", Json.CreateObject(), JSON_OBJECT);
nodeinfo->set("software", Json.CreateObject(slon_mem_task), JSON_OBJECT);
nodeinfo->o("software")->set("name", "slon", JSON_STRING);
nodeinfo->o("software")->set("version", db->o("instance")->@("version"), JSON_STRING);
nodeinfo->set("protocols", Json.Parse("[\"activitypub\"]"), JSON_ARRAY);
nodeinfo->set("services", Json.Parse("{\"outbound\":[],\"inbound\":[]}"), JSON_OBJECT);
nodeinfo->set("usage", Json.CreateObject(), JSON_OBJECT);
nodeinfo->o("usage")->set("users", Json.CreateObject(), JSON_OBJECT);
nodeinfo->set("protocols", Json.Parse("[\"activitypub\"]", slon_mem_task), JSON_ARRAY);
nodeinfo->set("services", Json.Parse("{\"outbound\":[],\"inbound\":[]}", slon_mem_task), JSON_OBJECT);
nodeinfo->set("usage", Json.CreateObject(slon_mem_task), JSON_OBJECT);
nodeinfo->o("usage")->set("users", Json.CreateObject(slon_mem_task), JSON_OBJECT);
nodeinfo->o("usage")->o("users")->set("total", db->o("instance")->o("stats")->@("user_count"), JSON_NUMBER);
// FIXME: return activeMonth, activeHalfyear
nodeinfo->o("usage")->o("users")->set("activeMonth", 0, JSON_NUMBER);
nodeinfo->o("usage")->o("users")->set("activeHalfyear", 0, JSON_NUMBER);
nodeinfo->set("localPosts", db->o("instance")->o("stats")->@("status_count"), JSON_NUMBER);
nodeinfo->set("openRegistrations", db->o("instance")->@("registrations"), JSON_BOOLEAN);
nodeinfo->set("metadata", Json.CreateObject(), JSON_OBJECT);
nodeinfo->set("metadata", Json.CreateObject(slon_mem_task), JSON_OBJECT);
nodeinfo->o("metadata")->set("nodeName", db->o("instance")->@("title"), JSON_STRING);
nodeinfo->o("metadata")->set("nodeDescription", db->o("instance")->@("description"), JSON_STRING);
session->send(nodeinfo);
Json.Delete(nodeinfo);
}