Add timeline visibility options
[akkoma] / lib / pleroma / web / nodeinfo / nodeinfo_controller.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
6 use Pleroma.Web, :controller
7
8 alias Pleroma.Config
9 alias Pleroma.Stats
10 alias Pleroma.User
11 alias Pleroma.Web.Federator.Publisher
12 alias Pleroma.Web.MastodonAPI.InstanceView
13 alias Pleroma.Web.Endpoint
14 alias Pleroma.Web.Nodeinfo.Nodeinfo
15
16 def schemas(conn, _params) do
17 response = %{
18 links: [
19 %{
20 rel: "http://nodeinfo.diaspora.software/ns/schema/2.0",
21 href: Endpoint.url() <> "/nodeinfo/2.0.json"
22 },
23 %{
24 rel: "http://nodeinfo.diaspora.software/ns/schema/2.1",
25 href: Endpoint.url() <> "/nodeinfo/2.1.json"
26 }
27 ]
28 }
29
30 json(conn, response)
31 end
32
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
36 conn
37 |> put_resp_header(
38 "content-type",
39 "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8"
40 )
41 |> json(Nodeinfo.get_nodeinfo(version))
42 end
43
44 def nodeinfo(conn, _) do
45 render_error(conn, :not_found, "Nodeinfo schema version not handled")
46 end
47 end