logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 762f6edc29a7a48e3a663e9bedec58e0036ff363
parent: 12f0ad139267c9945f49c3f31dc6d454406bab7e
Author: lain <lain@soykaf.club>
Date:   Fri,  4 May 2018 23:16:16 +0200

Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into develop

Diffstat:

Alib/pleroma/web/nodeinfo/nodeinfo.ex1+
Alib/pleroma/web/nodeinfo/nodeinfo_controller.ex63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/router.ex5+++++
3 files changed, 69 insertions(+), 0 deletions(-)

diff --git a/lib/pleroma/web/nodeinfo/nodeinfo.ex b/lib/pleroma/web/nodeinfo/nodeinfo.ex @@ -0,0 +1 @@ + diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -0,0 +1,63 @@ +defmodule Pleroma.Web.Nodeinfo.NodeinfoController do + use Pleroma.Web, :controller + + alias Pleroma.Web.Nodeinfo + alias Pleroma.Stats + alias Pleroma.Web + + @instance Application.get_env(:pleroma, :instance) + + def schemas(conn, _params) do + response = %{ + links: [ + %{ + rel: "http://nodeinfo.diaspora.software/ns/schema/2.0", + href: Web.base_url() <> "/nodeinfo/2.0.json" + } + ] + } + + json(conn, response) + end + + # Schema definition: https://github.com/jhass/nodeinfo/blob/master/schemas/2.0/schema.json + def nodeinfo(conn, %{"version" => "2.0"}) do + stats = Stats.get_stats() + + response = %{ + version: "2.0", + software: %{ + name: "pleroma", + version: Keyword.get(@instance, :version) + }, + protocols: ["ostatus", "activitypub"], + services: %{ + inbound: [], + outbound: [] + }, + openRegistrations: Keyword.get(@instance, :registrations_open), + usage: %{ + users: %{ + total: stats.user_count || 0 + }, + localPosts: stats.status_count || 0 + }, + metadata: %{ + nodeName: Keyword.get(@instance, :name) + } + } + + conn + |> put_resp_header( + "content-type", + "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8" + ) + |> json(response) + end + + def nodeinfo(conn, _) do + conn + |> put_status(404) + |> json(%{error: "Nodeinfo schema version not handled"}) + end +end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex @@ -295,6 +295,11 @@ defmodule Pleroma.Web.Router do get("/host-meta", WebFinger.WebFingerController, :host_meta) get("/webfinger", WebFinger.WebFingerController, :webfinger) + get("/nodeinfo", Nodeinfo.NodeinfoController, :schemas) + end + + scope "/nodeinfo", Pleroma.Web do + get("/:version", Nodeinfo.NodeinfoController, :nodeinfo) end end