Slon/Modules/NodeInfo: Implement .well-known/nodeinfo and nodeinfo/2.0
This commit is contained in:
parent
545d408512
commit
614e68194b
5 changed files with 44 additions and 0 deletions
4
Slon/Endpoints/Get/NodeInfo.HC
Normal file
4
Slon/Endpoints/Get/NodeInfo.HC
Normal file
|
@ -0,0 +1,4 @@
|
|||
if (!StrICmp("/nodeinfo/2.0", @slon_http_request_path(session))) {
|
||||
@slon_nodeinfo_20(session);
|
||||
return;
|
||||
}
|
|
@ -3,6 +3,11 @@ if (!StrICmp("/.well-known/host-meta", @slon_http_request_path(session))) {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!StrICmp("/.well-known/nodeinfo", @slon_http_request_path(session))) {
|
||||
@slon_nodeinfo(session);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!StrICmp("/.well-known/oauth-authorization-server", @slon_http_request_path(session))) {
|
||||
@slon_oauth_well_known(session);
|
||||
return;
|
||||
|
|
|
@ -500,6 +500,7 @@ U0 @slon_http_handle_get_request(SlonHttpSession* session)
|
|||
#include "Endpoints/Get/FollowedTags";
|
||||
#include "Endpoints/Get/Instance";
|
||||
#include "Endpoints/Get/Notifications";
|
||||
#include "Endpoints/Get/NodeInfo";
|
||||
#include "Endpoints/Get/OAuth";
|
||||
#include "Endpoints/Get/Search";
|
||||
#include "Endpoints/Get/Suggestions";
|
||||
|
|
|
@ -29,6 +29,7 @@ WinMax(Fs);
|
|||
|
||||
#include "Modules/ActivityPub";
|
||||
#include "Modules/Meta";
|
||||
#include "Modules/NodeInfo";
|
||||
#include "Modules/OAuth";
|
||||
#include "Modules/Web";
|
||||
#include "Modules/Webfinger";
|
||||
|
|
33
Slon/Modules/NodeInfo.HC
Normal file
33
Slon/Modules/NodeInfo.HC
Normal file
|
@ -0,0 +1,33 @@
|
|||
U0 @slon_nodeinfo(SlonHttpSession* session)
|
||||
{
|
||||
SLON_SCRATCH_BUFFER_AND_REQUEST_JSON
|
||||
no_warn request_json;
|
||||
|
||||
StrPrint(scratch_buffer, "{\"links\":[{\"rel\":\"http://nodeinfo.diaspora.software/ns/schema/2.0\",\"href\":\"https://%s/nodeinfo/2.0\"}]}", db->o("instance")->@("uri"));
|
||||
@slon_http_set_content_type(session, "application/json; charset=utf-8");
|
||||
session->send(scratch_buffer);
|
||||
}
|
||||
|
||||
U0 @slon_nodeinfo_20(SlonHttpSession* session)
|
||||
{
|
||||
JsonObject* nodeinfo = Json.CreateObject();
|
||||
nodeinfo->set("version", "2.0", JSON_STRING);
|
||||
nodeinfo->set("software", Json.CreateObject(), 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->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->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);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue