1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
6 use Pleroma.Web, :controller
11 alias Pleroma.Web.Federator.Publisher
12 alias Pleroma.Web.MastodonAPI.InstanceView
13 alias Pleroma.Web.Endpoint
14 alias Pleroma.Web.Nodeinfo.Nodeinfo
16 def schemas(conn, _params) do
20 rel: "http://nodeinfo.diaspora.software/ns/schema/2.0",
21 href: Endpoint.url() <> "/nodeinfo/2.0.json"
24 rel: "http://nodeinfo.diaspora.software/ns/schema/2.1",
25 href: Endpoint.url() <> "/nodeinfo/2.1.json"
33 # Schema definition: https://github.com/jhass/nodeinfo/blob/master/schemas/2.0/schema.json
34 # and https://github.com/jhass/nodeinfo/blob/master/schemas/2.1/schema.json
35 def nodeinfo(conn, %{"version" => version}) when version in ["2.0", "2.1"] do
39 "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8"
41 |> json(Nodeinfo.get_nodeinfo(version))
44 def nodeinfo(conn, _) do
45 render_error(conn, :not_found, "Nodeinfo schema version not handled")