refactor: use Phoenix verified routes

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2023-12-01 09:49:54 +01:00
parent 4f15535fa9
commit b315e1d7ff
83 changed files with 227 additions and 372 deletions

View File

@@ -5,8 +5,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Comment do
alias Mobilizon.Activities.Activity
alias Mobilizon.Actors.Actor
alias Mobilizon.Service.Activity.Renderer
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
import Mobilizon.Web.Gettext, only: [dgettext: 3]
@behaviour Renderer
@@ -78,11 +77,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Comment do
end
defp event_url(activity) do
Routes.page_url(
Endpoint,
:event,
activity.subject_params["event_uuid"]
)
url(~p"/events/#{activity.subject_params["event_uuid"]}")
end
defp event_comment_url(activity) do

View File

@@ -5,8 +5,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Conversation do
alias Mobilizon.Activities.Activity
alias Mobilizon.Actors.Actor
alias Mobilizon.Service.Activity.Renderer
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
import Mobilizon.Web.Gettext, only: [dgettext: 3]
@behaviour Renderer
@@ -61,11 +60,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Conversation do
end
defp conversation_url(activity) do
Routes.page_url(
Endpoint,
:conversation,
activity.subject_params["conversation_id"]
)
url(~p"/conversations/#{activity.subject_params["conversation_id"]}")
end
defp profile(activity), do: Actor.display_name_and_username(activity.author)

View File

@@ -5,8 +5,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Discussion do
alias Mobilizon.Activities.Activity
alias Mobilizon.Actors.Actor
alias Mobilizon.Service.Activity.Renderer
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
import Mobilizon.Web.Gettext, only: [dgettext: 3]
@behaviour Renderer
@@ -113,12 +112,8 @@ defmodule Mobilizon.Service.Activity.Renderer.Discussion do
end
defp discussion_url(activity) do
Endpoint
|> Routes.page_url(
:discussion,
Actor.preferred_username_and_domain(activity.group),
activity.subject_params["discussion_slug"]
)
~p"/@#{Actor.preferred_username_and_domain(activity.group)}/c/#{activity.subject_params["discussion_slug"]}"
|> url()
|> URI.decode()
end

View File

@@ -5,8 +5,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Event do
alias Mobilizon.Activities.Activity
alias Mobilizon.Actors.Actor
alias Mobilizon.Service.Activity.Renderer
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
import Mobilizon.Web.Gettext, only: [dgettext: 3]
@behaviour Renderer
@@ -81,11 +80,8 @@ defmodule Mobilizon.Service.Activity.Renderer.Event do
end
defp event_url(activity) do
Endpoint
|> Routes.page_url(
:event,
activity.subject_params["event_uuid"]
)
~p"/events/#{activity.subject_params["event_uuid"]}"
|> url()
|> URI.decode()
end

View File

@@ -5,8 +5,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Group do
alias Mobilizon.Activities.Activity
alias Mobilizon.Actors.Actor
alias Mobilizon.Service.Activity.Renderer
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
import Mobilizon.Web.Gettext, only: [dgettext: 3]
@behaviour Renderer
@@ -30,8 +29,8 @@ defmodule Mobilizon.Service.Activity.Renderer.Group do
end
defp group_url(activity) do
Endpoint
|> Routes.page_url(:actor, Actor.preferred_username_and_domain(activity.group))
~p"/@#{Actor.preferred_username_and_domain(activity.group)}"
|> url()
|> URI.decode()
end

View File

@@ -5,8 +5,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Member do
alias Mobilizon.Activities.Activity
alias Mobilizon.Actors.Actor
alias Mobilizon.Service.Activity.Renderer
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
import Mobilizon.Web.Gettext, only: [dgettext: 3]
@behaviour Renderer
@@ -81,12 +80,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Member do
defp member_url(activity) do
group_url =
Endpoint
|> Routes.page_url(
:actor,
Actor.preferred_username_and_domain(activity.group)
)
|> URI.decode()
~p"/@#{Actor.preferred_username_and_domain(activity.group)}" |> url() |> URI.decode()
"#{group_url}/settings/members"
end

View File

@@ -5,8 +5,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Post do
alias Mobilizon.Activities.Activity
alias Mobilizon.Actors.Actor
alias Mobilizon.Service.Activity.Renderer
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
import Mobilizon.Web.Gettext, only: [dgettext: 3]
@behaviour Renderer
@@ -52,12 +51,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Post do
end
defp post_url(activity) do
Endpoint
|> Routes.page_url(
:post,
activity.subject_params["post_slug"]
)
|> URI.decode()
URI.decode(~p"/p/#{activity.subject_params["post_slug"]}")
end
defp profile(activity), do: Actor.display_name_and_username(activity.author)

View File

@@ -5,8 +5,7 @@ defmodule Mobilizon.Service.Activity.Renderer.Resource do
alias Mobilizon.Activities.Activity
alias Mobilizon.Actors.Actor
alias Mobilizon.Service.Activity.Renderer
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
import Mobilizon.Web.Gettext, only: [dgettext: 3]
@behaviour Renderer
@@ -73,8 +72,8 @@ defmodule Mobilizon.Service.Activity.Renderer.Resource do
end
defp resource_url(activity) do
Endpoint
|> Routes.page_url(:resource, activity.subject_params["resource_uuid"])
~p"/resource/#{activity.subject_params["resource_uuid"]}"
|> url()
|> URI.decode()
end

View File

@@ -8,7 +8,7 @@ defmodule Mobilizon.Service.Auth.Applications do
alias Mobilizon.Service.Auth.Authenticator
alias Mobilizon.Users.User
alias Mobilizon.Web.Auth.Guardian
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
require Logger
@app_access_tokens_ttl {8, :hour}
@@ -260,8 +260,7 @@ defmodule Mobilizon.Service.Auth.Applications do
with {:app, %Application{scope: app_scope} = application} <-
{:app, Applications.get_application_by_client_id(client_id)},
{device_code, user_code, verification_uri} <-
{string_of_length(40), string_of_length(8),
Routes.page_url(Mobilizon.Web.Endpoint, :auth_device)},
{string_of_length(40), string_of_length(8), url(~p"/login/device")},
{:scope_included, true} <- {:scope_included, request_scope_valid?(app_scope, scope)},
{:ok, %ApplicationDeviceActivation{} = application_device_activation} <-
Applications.create_application_device_activation(%{

View File

@@ -15,7 +15,7 @@ defmodule Mobilizon.Service.Export.Feed do
alias Mobilizon.Users.User
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
require Logger
@@ -104,10 +104,7 @@ defmodule Mobilizon.Service.Export.Feed do
defp build_actor_feed(%Actor{} = actor, events, posts, public \\ true) do
display_name = Actor.display_name(actor)
self_url =
Endpoint
|> Routes.feed_url(:actor, actor.preferred_username, "atom")
|> URI.decode()
self_url = ~p"/@#{actor.preferred_username}/feed/atom" |> url() |> URI.decode()
title =
if public,
@@ -215,7 +212,7 @@ defmodule Mobilizon.Service.Export.Feed do
# Build an atom feed from actor and its public events
@spec build_user_feed(list(Event.t()), User.t(), String.t()) :: String.t()
defp build_user_feed(events, %User{email: email}, token) do
self_url = Endpoint |> Routes.feed_url(:going, token, "atom") |> URI.decode()
self_url = ~p"/events/going/#{token}/format" |> url() |> URI.decode()
# Title uses default instance language
self_url

View File

@@ -2,9 +2,8 @@ defimpl Mobilizon.Service.Metadata, for: Mobilizon.Actors.Actor do
alias Phoenix.HTML
alias Phoenix.HTML.Tag
alias Mobilizon.Actors.Actor
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.JsonLD.ObjectView
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
import Mobilizon.Service.Metadata.Utils,
only: [process_description: 2, default_description: 1, escape_text: 1]
@@ -25,13 +24,7 @@ defimpl Mobilizon.Service.Metadata, for: Mobilizon.Actors.Actor do
Tag.tag(:meta, property: "og:title", content: actor_display_name_escaped(group)),
Tag.tag(:meta,
property: "og:url",
content:
Endpoint
|> Routes.page_url(
:actor,
Actor.preferred_username_and_domain(group)
)
|> URI.decode()
content: ~p"/@#{Actor.preferred_username_and_domain(group)}" |> url() |> URI.decode()
),
Tag.tag(:meta, property: "og:description", content: group.summary),
Tag.tag(:meta, property: "og:type", content: "profile"),
@@ -91,20 +84,13 @@ defimpl Mobilizon.Service.Metadata, for: Mobilizon.Actors.Actor do
rel: "alternate",
type: "application/atom+xml",
title: gettext("%{name}'s feed", name: actor_display_name_escaped(group)) |> HTML.raw(),
href:
Routes.feed_url(Endpoint, :actor, Actor.preferred_username_and_domain(group), :atom)
href: url(~p"/@#{Actor.preferred_username_and_domain(group)}/feed/atom")
),
Tag.tag(:link,
rel: "alternate",
type: "text/calendar",
title: gettext("%{name}'s feed", name: actor_display_name_escaped(group)) |> HTML.raw(),
href:
Routes.feed_url(
Endpoint,
:actor,
Actor.preferred_username_and_domain(group),
:ics
)
href: url(~p"/@#{Actor.preferred_username_and_domain(group)}/feed/ics")
),
Tag.tag(:link,
rel: "alternate",

View File

@@ -6,7 +6,7 @@ defimpl Mobilizon.Service.Metadata, for: Mobilizon.Events.Event do
alias Mobilizon.Events.{Event, EventOptions}
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.JsonLD.ObjectView
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
import Mobilizon.Service.Metadata.Utils,
only: [
@@ -56,11 +56,8 @@ defimpl Mobilizon.Service.Metadata, for: Mobilizon.Events.Event do
"position" => 1,
"name" => event.attributed_to |> Actor.display_name() |> escape_text(),
"item" =>
Endpoint
|> Routes.page_url(
:actor,
Actor.preferred_username_and_domain(event.attributed_to)
)
~p"/@#{Actor.preferred_username_and_domain(event.attributed_to)}"
|> url()
|> URI.decode()
},
%{

View File

@@ -9,7 +9,7 @@ defmodule Mobilizon.Service.Metadata.Instance do
alias Mobilizon.Config
alias Mobilizon.Service.Metadata.Utils
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
import Mobilizon.Web.Gettext
@doc """
@@ -58,13 +58,13 @@ defmodule Mobilizon.Service.Metadata.Instance do
rel: "alternate",
type: "application/atom+xml",
title: gettext("%{name}'s feed", name: Config.instance_name()) |> HTML.raw(),
href: Routes.feed_url(Endpoint, :instance, :atom)
href: url(~p"/feed/instance/atom")
),
Tag.tag(:link,
rel: "alternate",
type: "text/calendar",
title: gettext("%{name}'s feed", name: Config.instance_name()) |> HTML.raw(),
href: Routes.feed_url(Endpoint, :instance, :ics)
href: url(~p"/feed/instance/ics")
)
]
end

View File

@@ -4,9 +4,8 @@ defimpl Mobilizon.Service.Metadata, for: Mobilizon.Posts.Post do
alias Mobilizon.Actors.Actor
alias Mobilizon.Medias.{File, Media}
alias Mobilizon.Posts.Post
alias Mobilizon.Web.Endpoint
use Mobilizon.Web, :verified_routes
alias Mobilizon.Web.JsonLD.ObjectView
alias Mobilizon.Web.Router.Helpers, as: Routes
import Mobilizon.Service.Metadata.Utils,
only: [process_description: 2, strip_tags: 1, escape_text: 1]
@@ -35,11 +34,8 @@ defimpl Mobilizon.Service.Metadata, for: Mobilizon.Posts.Post do
"position" => 1,
"name" => post.attributed_to |> Actor.display_name() |> escape_text,
"item" =>
Endpoint
|> Routes.page_url(
:actor,
Actor.preferred_username_and_domain(post.attributed_to)
)
~p"/@#{Actor.preferred_username_and_domain(post.attributed_to)}"
|> url()
|> URI.decode()
},
%{

View File

@@ -6,14 +6,14 @@ defmodule Mobilizon.Service.SiteMap do
alias Mobilizon.{Actors, Events, Posts}
alias Mobilizon.Storage.Repo
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.Router.Helpers, as: Routes
use Mobilizon.Web, :verified_routes
@default_static_frequency :monthly
@spec generate_sitemap :: {:ok, :ok}
def generate_sitemap do
static_routes = [
{Routes.page_url(Endpoint, :index, []), :daily},
{url(~p"/*path"), :daily},
"#{Endpoint.url()}/search",
"#{Endpoint.url()}/about/instance",
"#{Endpoint.url()}/terms",