Meta: Add files to repository
This commit is contained in:
parent
6d27d43268
commit
52cb92f587
120 changed files with 71820 additions and 0 deletions
39
Slon/Modules/Webfinger.HC
Normal file
39
Slon/Modules/Webfinger.HC
Normal file
|
@ -0,0 +1,39 @@
|
|||
U0 @slon_webfinger(SlonHttpSession* session)
|
||||
{
|
||||
SLON_SCRATCH_BUFFER_AND_REQUEST_JSON
|
||||
U8* resource = request_json->@("resource");
|
||||
StrPrint(scratch_buffer, "@%s", db->o("instance")->@("uri"));
|
||||
if (resource && String.BeginsWith("acct:", resource) && String.EndsWith(scratch_buffer, resource)) {
|
||||
resource = StrFind(":", resource) + 1;
|
||||
StrFind("@", resource)[0] = NULL;
|
||||
if (db->o("actors")->@(resource)) {
|
||||
JsonObject* webfinger_object = Json.CreateObject();
|
||||
|
||||
StrPrint(scratch_buffer, "acct:%s@%s", resource, db->o("instance")->@("uri"));
|
||||
webfinger_object->set("subject", scratch_buffer, JSON_STRING);
|
||||
|
||||
JsonArray* aliases = Json.CreateArray();
|
||||
StrPrint(scratch_buffer, "https://%s/@%s", db->o("instance")->@("uri"), resource);
|
||||
aliases->append(Json.CreateItem(scratch_buffer, JSON_STRING));
|
||||
StrPrint(scratch_buffer, "https://%s/users/%s", db->o("instance")->@("uri"), resource);
|
||||
aliases->append(Json.CreateItem(scratch_buffer, JSON_STRING));
|
||||
webfinger_object->set("aliases", aliases, JSON_ARRAY);
|
||||
|
||||
JsonArray* links = Json.CreateArray();
|
||||
JsonObject* link_object = Json.CreateObject();
|
||||
link_object->set("rel", "self", JSON_STRING);
|
||||
link_object->set("type", "application/activity+json", JSON_STRING);
|
||||
StrPrint(scratch_buffer, "https://%s/users/%s", db->o("instance")->@("uri"), resource);
|
||||
link_object->set("href", scratch_buffer, JSON_STRING);
|
||||
links->append(Json.CreateItem(link_object, JSON_OBJECT));
|
||||
webfinger_object->set("links", links, JSON_ARRAY);
|
||||
|
||||
@slon_http_send_json(session, webfinger_object);
|
||||
Json.Delete(webfinger_object);
|
||||
} else {
|
||||
@slon_http_set_status_code(session, 404);
|
||||
}
|
||||
} else {
|
||||
@slon_http_set_status_code(session, 400);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue