diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/nodeinfo/nodeinfo.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 53 | ||||
| -rw-r--r-- | lib/pleroma/web/router.ex | 5 | 
3 files changed, 60 insertions, 0 deletions
| diff --git a/lib/pleroma/web/nodeinfo/nodeinfo.ex b/lib/pleroma/web/nodeinfo/nodeinfo.ex new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/lib/pleroma/web/nodeinfo/nodeinfo.ex @@ -0,0 +1,2 @@ + + diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex new file mode 100644 index 000000000..2c06875f2 --- /dev/null +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -0,0 +1,53 @@ +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(conn, response) +  end + +  # Schema definition: https://github.com/jhass/nodeinfo/blob/master/schemas/2.0/schema.json +  def nodeinfo(conn, %{"version" => "2.0"}) do +    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.get_stats().user_count, +        } +      }, +      metadata: %{} +    } + +    json(conn, response) +  end + +  def nodeinfo(conn, _) do +    conn +    |> put_status(404) +    |> json(%{error: "Nodeinfo schema not handled"}) +  end +end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index cecf5527c..c025dea33 100644 --- 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 | 
