From 8f63a831c4334cb1cf705a0eb41b159b59d3e0f4 Mon Sep 17 00:00:00 2001 From: miraikumiko Date: Thu, 19 Jun 2025 08:45:06 +0200 Subject: [PATCH] Add host-meta --- .../controllers/hostmeta_controller.ex | 20 +++++++++++++++++++ lib/nulla_web/router.ex | 1 + .../controllers/hostmeta_controller_test.exs | 13 ++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 lib/nulla_web/controllers/hostmeta_controller.ex create mode 100644 test/nulla_web/controllers/hostmeta_controller_test.exs diff --git a/lib/nulla_web/controllers/hostmeta_controller.ex b/lib/nulla_web/controllers/hostmeta_controller.ex new file mode 100644 index 0000000..8f7d835 --- /dev/null +++ b/lib/nulla_web/controllers/hostmeta_controller.ex @@ -0,0 +1,20 @@ +defmodule NullaWeb.HostmetaController do + use NullaWeb, :controller + alias Nulla.Models.InstanceSettings + + def index(conn, _params) do + instance_settings = InstanceSettings.get_instance_settings!() + domain = instance_settings.domain + + xml = """ + + + + + """ + + conn + |> put_resp_content_type("application/xrd+xml") + |> send_resp(200, xml) + end +end diff --git a/lib/nulla_web/router.ex b/lib/nulla_web/router.ex index ed3b543..cd80eb6 100644 --- a/lib/nulla_web/router.ex +++ b/lib/nulla_web/router.ex @@ -17,6 +17,7 @@ defmodule NullaWeb.Router do scope "/", NullaWeb do pipe_through :browser + get "/.well-known/host-meta", HostmetaController, :index get "/.well-known/webfinger", WebfingerController, :index get "/.well-known/nodeinfo", NodeinfoController, :index get "/nodeinfo/2.0", NodeinfoController, :show diff --git a/test/nulla_web/controllers/hostmeta_controller_test.exs b/test/nulla_web/controllers/hostmeta_controller_test.exs new file mode 100644 index 0000000..99d5baa --- /dev/null +++ b/test/nulla_web/controllers/hostmeta_controller_test.exs @@ -0,0 +1,13 @@ +defmodule NullaWeb.HostmetaControllerTest do + use NullaWeb.ConnCase + + describe "GET /.well-known/host-meta" do + test "returns Nodeinfo JSON index", %{conn: conn} do + conn = + conn + |> get(~p"/.well-known/host-meta") + + assert response(conn, 200) =~ "localhost" + end + end +end