From ae2646453b482e8f30e4efc463ad8d940be80ef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Mon, 28 Mar 2022 21:32:47 +0200 Subject: [PATCH] Add /@:nickname route, redirect /users/:nickname.rss to /users/:nickname/feed.rss instead of .atom MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- lib/pleroma/web/feed/user_controller.ex | 7 +++++-- lib/pleroma/web/router.ex | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/feed/user_controller.ex b/lib/pleroma/web/feed/user_controller.ex index 6657c2b3ed..6bf1ac25b6 100644 --- a/lib/pleroma/web/feed/user_controller.ex +++ b/lib/pleroma/web/feed/user_controller.ex @@ -28,9 +28,12 @@ def feed_redirect(%{assigns: %{format: format}} = conn, _params) ActivityPubController.call(conn, :user) end - def feed_redirect(conn, %{"nickname" => nickname}) do + def feed_redirect(%{assigns: assigns} = conn, %{"nickname" => nickname}) do + format = Map.get(assigns, :format, "atom") + format = if format in ["atom", "rss"], do: format, else: "atom" + with {_, %User{} = user} <- {:fetch_user, User.get_cached_by_nickname(nickname)} do - redirect(conn, external: "#{Routes.user_feed_url(conn, :feed, user.nickname)}.atom") + redirect(conn, external: "#{Routes.user_feed_url(conn, :feed, user.nickname)}.#{format}") end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 3ec411edbf..be8988a4a4 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -723,6 +723,7 @@ defmodule Pleroma.Web.Router do # Note: returns user _profile_ for json requests, redirects to user _feed_ for non-json ones get("/users/:nickname", Feed.UserController, :feed_redirect, as: :user_feed) + get("/@:nickname", Feed.UserController, :feed_redirect, as: :user_feed) end scope "/", Pleroma.Web do