diff --git a/.sobelow-skips b/.sobelow-skips index 3ce31fbb..0d409653 100644 --- a/.sobelow-skips +++ b/.sobelow-skips @@ -1,15 +1,15 @@ 155A1FB53DE39EC8EFCFD7FB94EA823D 1C29EE70E90ECED01AF28EC58D2575B5 +2BB1D36656B423758A470021718FCB09 31CE26BC979C57B9E3CC97B40C290CE5 3529E7A4CECC24D02678820E6F521162 -37E854EA3BDF7275C6A7631F80804EC4 +3644C4E850300482AA409471EFE1EFB3 4E7C044C59E0BCB76AA826789998F624 53CBBEB6243FAF5C37249CBA17DE6F4C 5BCE3651A03711295046DE48BDFE007E -5C16A2AE6A24E4795F95DDE20EEC458E 5C4CED447689F00D9D1ACEB9B895ED29 -630C0972985257251EDF89A7117DE423 +90EB7E986B2A3A0C3851B6BF158ECD73 94ACF7B17C3FF42F64E57DD1DA936BD8 A32E125003F1EDFAD95C487C6A969725 ACF6272A1DBB3A2ABD96C0C120B5CA69 diff --git a/lib/federation/web_finger/web_finger.ex b/lib/federation/web_finger/web_finger.ex index 467e46b5..bc65bec4 100644 --- a/lib/federation/web_finger/web_finger.ex +++ b/lib/federation/web_finger/web_finger.ex @@ -14,7 +14,7 @@ defmodule Mobilizon.Federation.WebFinger do alias Mobilizon.Federation.WebFinger.XmlBuilder alias Mobilizon.Service.HTTP.{HostMetaClient, WebfingerClient} alias Mobilizon.Web.Endpoint - alias Mobilizon.Web.Router.Helpers, as: Routes + use Mobilizon.Web, :verified_routes require Jason require Logger import SweetXml @@ -85,7 +85,7 @@ defmodule Mobilizon.Federation.WebFinger do %{"rel" => "self", "type" => "application/activity+json", "href" => actor.url}, %{ "rel" => "http://ostatus.org/schema/1.0/subscribe", - "template" => "#{Routes.page_url(Endpoint, :interact, uri: nil)}{uri}" + "template" => "#{url(~p"/interact?#{[uri: nil]}")}{uri}" } ] |> maybe_add_avatar(actor) diff --git a/lib/mix/tasks/mobilizon/maintenance/detect_spam.ex b/lib/mix/tasks/mobilizon/maintenance/detect_spam.ex index 1af1902a..80ab1d6c 100644 --- a/lib/mix/tasks/mobilizon/maintenance/detect_spam.ex +++ b/lib/mix/tasks/mobilizon/maintenance/detect_spam.ex @@ -9,8 +9,7 @@ defmodule Mix.Tasks.Mobilizon.Maintenance.DetectSpam do alias Mobilizon.Service.AntiSpam import Mix.Tasks.Mobilizon.Common alias Mobilizon.Federation.ActivityPub.Actions - alias Mobilizon.Web.Endpoint - alias Mobilizon.Web.Router.Helpers, as: Routes + use Mobilizon.Web, :verified_routes @shortdoc "Scan all profiles and events against spam detector and report them" @@ -163,9 +162,7 @@ defmodule Mix.Tasks.Mobilizon.Maintenance.DetectSpam do end defp handle_spam_event(event_id, event_title, event_uuid, organizer_actor_id, options) do - shell_info( - "Detected event #{event_title} as spam: #{Routes.page_url(Endpoint, :event, event_uuid)}" - ) + shell_info("Detected event #{event_title} as spam: #{url(~p"/events/#{event_uuid}")}") unless dry_run?(options) do report_spam_event(event_id, event_title, organizer_actor_id, options) diff --git a/lib/mobilizon/actors/actor.ex b/lib/mobilizon/actors/actor.ex index 3d5cedc8..14432ec1 100644 --- a/lib/mobilizon/actors/actor.ex +++ b/lib/mobilizon/actors/actor.ex @@ -19,6 +19,7 @@ defmodule Mobilizon.Actors.Actor do alias Mobilizon.Web.Endpoint alias Mobilizon.Web.Router.Helpers, as: Routes + use Mobilizon.Web, :verified_routes import Mobilizon.Web.Gettext, only: [dgettext: 2] import Mobilizon.Service.Guards, only: [is_valid_string: 1] @@ -445,7 +446,7 @@ defmodule Mobilizon.Actors.Actor do # Relay has a special URI def build_url("relay", :page, _args), - do: Endpoint |> Routes.activity_pub_url(:relay) |> URI.decode() + do: ~p"/relay" |> url() |> URI.decode() def build_url(preferred_username, endpoint, args) when endpoint in [:page, :resources, :posts, :discussions, :events, :todos] do diff --git a/lib/mobilizon/discussions/comment.ex b/lib/mobilizon/discussions/comment.ex index 151f4521..77c5817b 100644 --- a/lib/mobilizon/discussions/comment.ex +++ b/lib/mobilizon/discussions/comment.ex @@ -15,8 +15,7 @@ defmodule Mobilizon.Discussions.Comment do alias Mobilizon.Medias.Media alias Mobilizon.Mention - alias Mobilizon.Web.Endpoint - alias Mobilizon.Web.Router.Helpers, as: Routes + use Mobilizon.Web, :verified_routes @type t :: %__MODULE__{ text: String.t(), @@ -160,7 +159,7 @@ defmodule Mobilizon.Discussions.Comment do end @spec generate_url(String.t()) :: String.t() - defp generate_url(uuid), do: Routes.page_url(Endpoint, :comment, uuid) + defp generate_url(uuid), do: url(~p"/comments/#{uuid}") @spec put_tags(Ecto.Changeset.t(), map) :: Ecto.Changeset.t() defp put_tags(changeset, %{"tags" => tags}), diff --git a/lib/mobilizon/discussions/discussion.ex b/lib/mobilizon/discussions/discussion.ex index 5d5f513e..b2ba6a59 100644 --- a/lib/mobilizon/discussions/discussion.ex +++ b/lib/mobilizon/discussions/discussion.ex @@ -27,8 +27,7 @@ defmodule Mobilizon.Discussions.Discussion do alias Mobilizon.Actors.Actor alias Mobilizon.Discussions.Comment alias Mobilizon.Discussions.Discussion.TitleSlug - alias Mobilizon.Web.Endpoint - alias Mobilizon.Web.Router.Helpers, as: Routes + use Mobilizon.Web, :verified_routes import Mobilizon.Web.Gettext, only: [dgettext: 2] @type t :: %__MODULE__{ @@ -101,5 +100,5 @@ defmodule Mobilizon.Discussions.Discussion do @spec generate_url(String.t(), String.t()) :: String.t() defp generate_url(preferred_username, slug), - do: Routes.page_url(Endpoint, :discussion, preferred_username, slug) + do: url(~p"/@:#{preferred_username}/c/#{slug}") end diff --git a/lib/mobilizon/events/event.ex b/lib/mobilizon/events/event.ex index 9a1692e3..ff76568a 100644 --- a/lib/mobilizon/events/event.ex +++ b/lib/mobilizon/events/event.ex @@ -32,8 +32,7 @@ defmodule Mobilizon.Events.Event do alias Mobilizon.Medias.Media alias Mobilizon.Storage.Repo - alias Mobilizon.Web.Endpoint - alias Mobilizon.Web.Router.Helpers, as: Routes + use Mobilizon.Web, :verified_routes @type t :: %__MODULE__{ id: integer(), @@ -140,7 +139,7 @@ defmodule Mobilizon.Events.Event do @spec changeset(t | Ecto.Schema.t(), map) :: Changeset.t() def changeset(%__MODULE__{} = event, attrs) do attrs = Map.update(attrs, :uuid, Ecto.UUID.generate(), &(&1 || Ecto.UUID.generate())) - attrs = Map.update(attrs, :url, Routes.page_url(Endpoint, :event, attrs.uuid), & &1) + attrs = Map.update(attrs, :url, url(~p"/events/#{attrs.uuid}"), & &1) event |> cast(attrs, @attrs) diff --git a/lib/mobilizon/posts/post.ex b/lib/mobilizon/posts/post.ex index 870b438d..a6d9d9bf 100644 --- a/lib/mobilizon/posts/post.ex +++ b/lib/mobilizon/posts/post.ex @@ -27,8 +27,7 @@ defmodule Mobilizon.Posts.Post do alias Mobilizon.Medias.Media alias Mobilizon.Posts.Post.TitleSlug alias Mobilizon.Posts.PostVisibility - alias Mobilizon.Web.Endpoint - alias Mobilizon.Web.Router.Helpers, as: Routes + use Mobilizon.Web, :verified_routes import Mobilizon.Web.Gettext @type t :: %__MODULE__{ @@ -128,7 +127,7 @@ defmodule Mobilizon.Posts.Post do @spec generate_url(String.t()) :: String.t() defp generate_url(id_and_slug) when is_binary(id_and_slug), - do: Routes.page_url(Endpoint, :post, id_and_slug) + do: url(~p"/p/#{id_and_slug}") defp generate_url(_), do: nil diff --git a/lib/service/activity/renderer/comment.ex b/lib/service/activity/renderer/comment.ex index c7551c6d..fe77ebca 100644 --- a/lib/service/activity/renderer/comment.ex +++ b/lib/service/activity/renderer/comment.ex @@ -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 diff --git a/lib/service/activity/renderer/conversation.ex b/lib/service/activity/renderer/conversation.ex index e2a08118..d0bf1fa1 100644 --- a/lib/service/activity/renderer/conversation.ex +++ b/lib/service/activity/renderer/conversation.ex @@ -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) diff --git a/lib/service/activity/renderer/discussion.ex b/lib/service/activity/renderer/discussion.ex index 224a9376..7dc3aca1 100644 --- a/lib/service/activity/renderer/discussion.ex +++ b/lib/service/activity/renderer/discussion.ex @@ -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 diff --git a/lib/service/activity/renderer/event.ex b/lib/service/activity/renderer/event.ex index 3bf07232..f0677014 100644 --- a/lib/service/activity/renderer/event.ex +++ b/lib/service/activity/renderer/event.ex @@ -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 diff --git a/lib/service/activity/renderer/group.ex b/lib/service/activity/renderer/group.ex index a9df9d82..ca3216c6 100644 --- a/lib/service/activity/renderer/group.ex +++ b/lib/service/activity/renderer/group.ex @@ -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 diff --git a/lib/service/activity/renderer/member.ex b/lib/service/activity/renderer/member.ex index 47509b53..f1da19aa 100644 --- a/lib/service/activity/renderer/member.ex +++ b/lib/service/activity/renderer/member.ex @@ -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 diff --git a/lib/service/activity/renderer/post.ex b/lib/service/activity/renderer/post.ex index 1491e58e..1706217d 100644 --- a/lib/service/activity/renderer/post.ex +++ b/lib/service/activity/renderer/post.ex @@ -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) diff --git a/lib/service/activity/renderer/resource.ex b/lib/service/activity/renderer/resource.ex index 4ad17504..7820872f 100644 --- a/lib/service/activity/renderer/resource.ex +++ b/lib/service/activity/renderer/resource.ex @@ -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 diff --git a/lib/service/auth/applications.ex b/lib/service/auth/applications.ex index 04b8d3cc..44770ff3 100644 --- a/lib/service/auth/applications.ex +++ b/lib/service/auth/applications.ex @@ -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(%{ diff --git a/lib/service/export/feed.ex b/lib/service/export/feed.ex index 96f5644a..80ec7dcb 100644 --- a/lib/service/export/feed.ex +++ b/lib/service/export/feed.ex @@ -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 diff --git a/lib/service/metadata/actor.ex b/lib/service/metadata/actor.ex index e4174c45..a8f801d1 100644 --- a/lib/service/metadata/actor.ex +++ b/lib/service/metadata/actor.ex @@ -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", diff --git a/lib/service/metadata/event.ex b/lib/service/metadata/event.ex index 29b5a805..e311c66b 100644 --- a/lib/service/metadata/event.ex +++ b/lib/service/metadata/event.ex @@ -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() }, %{ diff --git a/lib/service/metadata/instance.ex b/lib/service/metadata/instance.ex index 953453eb..8bbc5db9 100644 --- a/lib/service/metadata/instance.ex +++ b/lib/service/metadata/instance.ex @@ -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 diff --git a/lib/service/metadata/post.ex b/lib/service/metadata/post.ex index 90daf3dc..9ff64f9a 100644 --- a/lib/service/metadata/post.ex +++ b/lib/service/metadata/post.ex @@ -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() }, %{ diff --git a/lib/service/site_map.ex b/lib/service/site_map.ex index 9db24644..24609d7b 100644 --- a/lib/service/site_map.ex +++ b/lib/service/site_map.ex @@ -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", diff --git a/lib/web/cache/activity_pub.ex b/lib/web/cache/activity_pub.ex index 9b05cb65..7e213068 100644 --- a/lib/web/cache/activity_pub.ex +++ b/lib/web/cache/activity_pub.ex @@ -13,8 +13,7 @@ defmodule Mobilizon.Web.Cache.ActivityPub do alias Mobilizon.Posts.Post alias Mobilizon.Resources.Resource alias Mobilizon.Todos.{Todo, TodoList} - alias Mobilizon.Web.Endpoint - alias Mobilizon.Web.Router.Helpers, as: Routes + use Mobilizon.Web, :verified_routes @cache :activity_pub @@ -73,7 +72,7 @@ defmodule Mobilizon.Web.Cache.ActivityPub do {:commit, event} nil -> - with url <- Routes.page_url(Endpoint, :event, uuid), + with url <- url(~p"/events/#{uuid}"), %Tombstone{} = tomstone <- Tombstone.find_tombstone(url) do tomstone else diff --git a/lib/web/controllers/application_controller.ex b/lib/web/controllers/application_controller.ex index a08960f1..02ecd1f0 100644 --- a/lib/web/controllers/application_controller.ex +++ b/lib/web/controllers/application_controller.ex @@ -111,11 +111,8 @@ defmodule Mobilizon.Web.ApplicationController do is_binary(state) and is_binary(scope) do redirect(conn, to: - Routes.page_path(conn, :authorize, - client_id: client_id, - redirect_uri: redirect_uri, - scope: scope, - state: state + url( + ~p"/oauth/authorize?#{[client_id: client_id, redirect_uri: redirect_uri, scope: scope, state: state]}" ) ) else diff --git a/lib/web/controllers/node_info_controller.ex b/lib/web/controllers/node_info_controller.ex index e5165e33..f9a09b7f 100644 --- a/lib/web/controllers/node_info_controller.ex +++ b/lib/web/controllers/node_info_controller.ex @@ -9,9 +9,6 @@ defmodule Mobilizon.Web.NodeInfoController do alias Mobilizon.Config alias Mobilizon.Service.Statistics - alias Mobilizon.Web.Endpoint - alias Mobilizon.Web.Router.Helpers, as: Routes - @node_info_supported_versions ["2.0", "2.1"] @node_info_schema_uri "http://nodeinfo.diaspora.software/ns/schema/" @@ -22,7 +19,7 @@ defmodule Mobilizon.Web.NodeInfoController do |> Enum.map(fn version -> %{ rel: @node_info_schema_uri <> version, - href: Routes.node_info_url(Endpoint, :nodeinfo, version) + href: url(~p"/.well-known/nodeinfo/#{version}") } end) diff --git a/lib/web/templates/email/activity/_comment_activity_item.html.heex b/lib/web/templates/email/activity/_comment_activity_item.html.heex index 8daa7214..169608da 100644 --- a/lib/web/templates/email/activity/_comment_activity_item.html.heex +++ b/lib/web/templates/email/activity/_comment_activity_item.html.heex @@ -3,9 +3,7 @@ <%= dgettext("activity", "%{profile} mentionned you in a comment under event %{event}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", event: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["event_title"])} " }) @@ -14,9 +12,7 @@ <%= dgettext("activity", "%{profile} has posted an announcement under event %{event}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", event: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["event_title"])} " }) @@ -26,9 +22,7 @@ <%= dgettext("activity", "%{profile} has posted a new reply under your event %{event}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", event: - " URI.decode()}#comment-#{@activity.subject_params["comment_reply_to_uuid"]}-#{@activity.subject_params["comment_uuid"]}\"> + " url() |> URI.decode()}#comment-#{@activity.subject_params["comment_reply_to_uuid"]}-#{@activity.subject_params["comment_uuid"]}\"> #{escape_html(@activity.subject_params["event_title"])} " }) @@ -40,9 +34,7 @@ %{ profile: "#{escaped_display_name_and_username(@activity.author)}", event: - " URI.decode()}#comment-#{@activity.subject_params["comment_uuid"]}\"> + " url() |> URI.decode()}#comment-#{@activity.subject_params["comment_uuid"]}\"> #{escape_html(@activity.subject_params["event_title"])} " } diff --git a/lib/web/templates/email/activity/_comment_activity_item.text.eex b/lib/web/templates/email/activity/_comment_activity_item.text.eex index f097b273..002ffe2c 100644 --- a/lib/web/templates/email/activity/_comment_activity_item.text.eex +++ b/lib/web/templates/email/activity/_comment_activity_item.text.eex @@ -4,22 +4,22 @@ event: @activity.subject_params["event_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% :participation_event_comment -> %><%= dgettext("activity", "%{profile} has posted an announcement under event %{event}.", +<%= url(~p"/events/#{@activity.subject_params["event_uuid"]}") |> URI.decode() %><% :participation_event_comment -> %><%= dgettext("activity", "%{profile} has posted an announcement under event %{event}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), event: @activity.subject_params["event_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% :event_new_comment -> %><%= if @activity.subject_params["comment_reply_to"] do %><%=dgettext("activity", "%{profile} has posted a new reply under your event %{event}.", +<%= url(~p"/events/#{@activity.subject_params["event_uuid"]}") |> URI.decode() %><% :event_new_comment -> %><%= if @activity.subject_params["comment_reply_to"] do %><%=dgettext("activity", "%{profile} has posted a new reply under your event %{event}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), event: @activity.subject_params["event_title"] } ) %> -<%= "#{Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode()}#comment-#{@activity.subject_params["comment_reply_to_uuid"]}-#{@activity.subject_params["comment_uuid"]}" %><% else %><%= dgettext("activity", "%{profile} has posted a new comment under your event %{event}.", +<%= "#{url(~p"/events/#{@activity.subject_params["event_uuid"]}") |> URI.decode()}#comment-#{@activity.subject_params["comment_reply_to_uuid"]}-#{@activity.subject_params["comment_uuid"]}" %><% else %><%= dgettext("activity", "%{profile} has posted a new comment under your event %{event}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), event: @activity.subject_params["event_title"] } ) %> -<%= "#{Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode()}#comment-#{@activity.subject_params["comment_uuid"]}"%><% end %><% end %> \ No newline at end of file +<%= "#{url(~p"/events/#{@activity.subject_params["event_uuid"]}") |> URI.decode()}#comment-#{@activity.subject_params["comment_uuid"]}"%><% end %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_conversation_activity_item.html.heex b/lib/web/templates/email/activity/_conversation_activity_item.html.heex index f59b2140..8debdd3d 100644 --- a/lib/web/templates/email/activity/_conversation_activity_item.html.heex +++ b/lib/web/templates/email/activity/_conversation_activity_item.html.heex @@ -3,18 +3,14 @@ <%= dgettext("activity", "%{profile} mentionned you in a %{conversation}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", conversation: - " URI.decode()}\">conversation" + " url() |> URI.decode()}\">conversation" }) |> raw %> <% :conversation_replied -> %> <%= dgettext("activity", "%{profile} replied you in a %{conversation}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", conversation: - " URI.decode()}\">conversation" + " url() |> URI.decode()}\">conversation" }) |> raw %> <% end %> diff --git a/lib/web/templates/email/activity/_conversation_activity_item.text.eex b/lib/web/templates/email/activity/_conversation_activity_item.text.eex index 7fe1f8b4..291c15c9 100644 --- a/lib/web/templates/email/activity/_conversation_activity_item.text.eex +++ b/lib/web/templates/email/activity/_conversation_activity_item.text.eex @@ -3,9 +3,9 @@ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :conversation, @activity.subject_params["conversation_participant_id"]) |> URI.decode() %><% :conversation_replied -> %><%= dgettext("activity", "%{profile} replied you in a conversation.", +<%= url(~p"/conversations/#{@activity.subject_params["conversation_participant_id"]}") |> URI.decode() %><% :conversation_replied -> %><%= dgettext("activity", "%{profile} replied you in a conversation.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :conversation, @activity.subject_params["conversation_participant_id"]) |> URI.decode() %><% end %> \ No newline at end of file +<%= url(~p"/conversations/#{@activity.subject_params["conversation_participant_id"]}") |> URI.decode() %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_discussion_activity_item.html.heex b/lib/web/templates/email/activity/_discussion_activity_item.html.heex index e5ba67bc..ce02312c 100644 --- a/lib/web/templates/email/activity/_discussion_activity_item.html.heex +++ b/lib/web/templates/email/activity/_discussion_activity_item.html.heex @@ -3,7 +3,7 @@ <%= dgettext("activity", "%{profile} created the discussion %{discussion}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", discussion: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["discussion_title"])}" }) |> raw %> @@ -11,7 +11,7 @@ <%= dgettext("activity", "%{profile} replied to the discussion %{discussion}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", discussion: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["discussion_title"])}" }) |> raw %> @@ -19,7 +19,7 @@ <%= dgettext("activity", "%{profile} renamed the discussion %{discussion}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", discussion: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["discussion_title"])}" }) |> raw %> @@ -27,7 +27,7 @@ <%= dgettext("activity", "%{profile} archived the discussion %{discussion}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", discussion: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["discussion_title"])}" }) |> raw %> diff --git a/lib/web/templates/email/activity/_discussion_activity_item.text.eex b/lib/web/templates/email/activity/_discussion_activity_item.text.eex index 97e67664..a5d56ae2 100644 --- a/lib/web/templates/email/activity/_discussion_activity_item.text.eex +++ b/lib/web/templates/email/activity/_discussion_activity_item.text.eex @@ -4,25 +4,25 @@ discussion: @activity.subject_params["discussion_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_replied -> %><%= dgettext("activity", "%{profile} replied to the discussion %{discussion}.", +<%= ~p"/#{Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group)}/c/#{@activity.subject_params["discussion_slug"]}" |> url() |> URI.decode() %><% :discussion_replied -> %><%= dgettext("activity", "%{profile} replied to the discussion %{discussion}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), discussion: @activity.subject_params["discussion_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_renamed -> %><%= dgettext("activity", "%{profile} renamed the discussion %{discussion}.", +<%= ~p"/#{Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group)}/c/#{@activity.subject_params["discussion_slug"]}" |> url() |> URI.decode() %><% :discussion_renamed -> %><%= dgettext("activity", "%{profile} renamed the discussion %{discussion}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), discussion: @activity.subject_params["discussion_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_archived -> %><%= dgettext("activity", "%{profile} archived the discussion %{discussion}.", +<%= ~p"/#{Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group)}/c/#{@activity.subject_params["discussion_slug"]}" |> url() |> URI.decode() %><% :discussion_archived -> %><%= dgettext("activity", "%{profile} archived the discussion %{discussion}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), discussion: @activity.subject_params["discussion_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_deleted -> %><%= dgettext("activity", "%{profile} deleted the discussion %{discussion}.", +<%= ~p"/#{Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group)}/c/#{@activity.subject_params["discussion_slug"]}" |> url() |> URI.decode() %><% :discussion_deleted -> %><%= dgettext("activity", "%{profile} deleted the discussion %{discussion}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), discussion: @activity.subject_params["discussion_title"] diff --git a/lib/web/templates/email/activity/_event_activity_item.html.heex b/lib/web/templates/email/activity/_event_activity_item.html.heex index 0497d658..8d8ba1ae 100644 --- a/lib/web/templates/email/activity/_event_activity_item.html.heex +++ b/lib/web/templates/email/activity/_event_activity_item.html.heex @@ -3,9 +3,7 @@ <%= dgettext("activity", "The event %{event} was created by %{profile}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", event: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["event_title"])} " }) @@ -14,9 +12,7 @@ <%= dgettext("activity", "The event %{event} was updated by %{profile}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", event: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["event_title"])} " }) @@ -32,9 +28,7 @@ <%= dgettext("activity", "%{profile} replied to a comment on the event %{event}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", event: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["event_title"])} " }) @@ -43,9 +37,7 @@ <%= dgettext("activity", "%{profile} posted a comment on the event %{event}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", event: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["event_title"])} " }) @@ -55,9 +47,7 @@ <%= dgettext("activity", "%{profile} joined your event %{event}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", event: - " URI.decode()}\">#{escape_html(@activity.subject_params["event_title"])}" + " url() |> URI.decode()}\">#{escape_html(@activity.subject_params["event_title"])}" }) |> raw %> <% end %> diff --git a/lib/web/templates/email/activity/_event_activity_item.text.eex b/lib/web/templates/email/activity/_event_activity_item.text.eex index 30b05abc..e5183f0c 100644 --- a/lib/web/templates/email/activity/_event_activity_item.text.eex +++ b/lib/web/templates/email/activity/_event_activity_item.text.eex @@ -4,13 +4,13 @@ event: @activity.subject_params["event_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% :event_updated -> %><%= dgettext("activity", "The event %{event} was updated by %{profile}.", +<%= url(~p"/events/#{@activity.subject_params["event_uuid"]}") |> URI.decode() %><% :event_updated -> %><%= dgettext("activity", "The event %{event} was updated by %{profile}.", %{ profile: display_name_and_username(@activity.author), event: @activity.subject_params["event_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% :event_deleted -> %><%= dgettext("activity", "The event %{event} was deleted by %{profile}.", +<%= url(~p"/events/#{@activity.subject_params["event_uuid"]}") |> URI.decode() %><% :event_deleted -> %><%= dgettext("activity", "The event %{event} was deleted by %{profile}.", %{ profile: display_name_and_username(@activity.author), event: @activity.subject_params["event_title"] @@ -22,16 +22,16 @@ event: @activity.subject_params["event_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} posted a comment on the event %{event}.", +<%= url(~p"/events/#{@activity.subject_params["event_uuid"]}") |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} posted a comment on the event %{event}.", %{ profile: display_name_and_username(@activity.author), event: @activity.subject_params["event_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% end %><% :event_new_participation -> %><%= dgettext("activity", "%{profile} joined your event %{event}.", +<%= url(~p"/events/#{@activity.subject_params["event_uuid"]}") |> URI.decode() %><% end %><% :event_new_participation -> %><%= dgettext("activity", "%{profile} joined your event %{event}.", %{ profile: display_name_and_username(@activity.author), event: @activity.subject_params["event_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% end %> \ No newline at end of file +<%= url(~p"/events/#{@activity.subject_params["event_uuid"]}") |> URI.decode() %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_group_activity_item.html.heex b/lib/web/templates/email/activity/_group_activity_item.html.heex index 36ad49b1..bfd8b2b6 100644 --- a/lib/web/templates/email/activity/_group_activity_item.html.heex +++ b/lib/web/templates/email/activity/_group_activity_item.html.heex @@ -3,9 +3,7 @@ <%= dgettext("activity", "%{profile} created the group %{group}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", group: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["group_name"])} " }) @@ -14,9 +12,7 @@ <%= dgettext("activity", "%{profile} updated the group %{group}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", group: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["group_name"])} " }) diff --git a/lib/web/templates/email/activity/_group_activity_item.text.eex b/lib/web/templates/email/activity/_group_activity_item.text.eex index 48308f74..b414c3bd 100644 --- a/lib/web/templates/email/activity/_group_activity_item.text.eex +++ b/lib/web/templates/email/activity/_group_activity_item.text.eex @@ -4,10 +4,10 @@ group: @activity.subject_params["group_name"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :actor, @activity.subject_params["group_federated_username"]) |> URI.decode() %><% :group_updated -> %><%= dgettext("activity", "%{profile} updated the group %{group}.", +<%= ~p"/@#{@activity.subject_params["group_federated_username"]}" |> url() |> URI.decode() %><% :group_updated -> %><%= dgettext("activity", "%{profile} updated the group %{group}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), group: @activity.subject_params["group_name"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :actor, @activity.subject_params["group_federated_username"]) |> URI.decode() %><% end %> \ No newline at end of file +<%= ~p"/@#{@activity.subject_params["group_federated_username"]}" |> url() |> URI.decode() %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_post_activity_item.html.heex b/lib/web/templates/email/activity/_post_activity_item.html.heex index 52c03e78..83a80b1b 100644 --- a/lib/web/templates/email/activity/_post_activity_item.html.heex +++ b/lib/web/templates/email/activity/_post_activity_item.html.heex @@ -3,9 +3,7 @@ <%= dgettext("activity", "The post %{post} was created by %{profile}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", post: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["post_title"])} " }) @@ -14,9 +12,7 @@ <%= dgettext("activity", "The post %{post} was updated by %{profile}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", post: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["post_title"])} " }) diff --git a/lib/web/templates/email/activity/_post_activity_item.text.eex b/lib/web/templates/email/activity/_post_activity_item.text.eex index ee9c37c9..8bafea65 100644 --- a/lib/web/templates/email/activity/_post_activity_item.text.eex +++ b/lib/web/templates/email/activity/_post_activity_item.text.eex @@ -4,13 +4,13 @@ post: @activity.subject_params["post_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :post, @activity.subject_params["post_slug"]) |> URI.decode() %><% :post_updated -> %><%= dgettext("activity", "The post %{post} was updated by %{profile}.", +<%= url(~p"/p/#{@activity.subject_params["post_slug"]}") |> URI.decode() %><% :post_updated -> %><%= dgettext("activity", "The post %{post} was updated by %{profile}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), post: @activity.subject_params["post_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :post, @activity.subject_params["post_slug"]) |> URI.decode() %><% :post_deleted -> %><%= dgettext("activity", "The post %{post} was deleted by %{profile}.", +<%= url(~p"/p/#{@activity.subject_params["post_slug"]}") |> URI.decode() %><% :post_deleted -> %><%= dgettext("activity", "The post %{post} was deleted by %{profile}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), post: @activity.subject_params["post_title"] diff --git a/lib/web/templates/email/activity/_resource_activity_item.html.heex b/lib/web/templates/email/activity/_resource_activity_item.html.heex index 67745aed..b4300eab 100644 --- a/lib/web/templates/email/activity/_resource_activity_item.html.heex +++ b/lib/web/templates/email/activity/_resource_activity_item.html.heex @@ -4,9 +4,7 @@ <%= dgettext("activity", "%{profile} created the folder %{resource}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", resource: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["resource_title"])} " }) @@ -15,9 +13,7 @@ <%= dgettext("activity", "%{profile} created the resource %{resource}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", resource: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["resource_title"])} " }) @@ -31,9 +27,7 @@ %{ profile: "#{escaped_display_name_and_username(@activity.author)}", resource: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["resource_title"])} ", old_resource_title: @@ -48,9 +42,7 @@ %{ profile: "#{escaped_display_name_and_username(@activity.author)}", resource: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["resource_title"])} ", old_resource_title: @@ -64,9 +56,7 @@ <%= dgettext("activity", "%{profile} moved the folder %{resource}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", resource: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["resource_title"])} " }) @@ -75,9 +65,7 @@ <%= dgettext("activity", "%{profile} moved the resource %{resource}.", %{ profile: "#{escaped_display_name_and_username(@activity.author)}", resource: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["resource_title"])} " }) diff --git a/lib/web/templates/email/activity/_resource_activity_item.text.eex b/lib/web/templates/email/activity/_resource_activity_item.text.eex index bd9ded7a..1a8a5935 100644 --- a/lib/web/templates/email/activity/_resource_activity_item.text.eex +++ b/lib/web/templates/email/activity/_resource_activity_item.text.eex @@ -5,39 +5,39 @@ resource: @activity.subject_params["resource_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} created the resource %{resource}.", +<%= url(~p"/resource/#{@activity.subject_params["resource_uuid"]}") |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} created the resource %{resource}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), resource: @activity.subject_params["resource_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% end %><% :resource_renamed -> %><%= if @activity.subject_params["is_folder"] do %><%= dgettext("activity", "%{profile} renamed the folder from %{old_resource_title} to %{resource}.", +<%= url(~p"/resource/#{@activity.subject_params["resource_uuid"]}") |> URI.decode() %><% end %><% :resource_renamed -> %><%= if @activity.subject_params["is_folder"] do %><%= dgettext("activity", "%{profile} renamed the folder from %{old_resource_title} to %{resource}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), resource: @activity.subject_params["resource_title"], old_resource_title: @activity.subject_params["old_resource_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} renamed the resource from %{old_resource_title} to %{resource}.", +<%= url(~p"/resource/#{@activity.subject_params["resource_uuid"]}") |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} renamed the resource from %{old_resource_title} to %{resource}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), resource: @activity.subject_params["resource_title"], old_resource_title: @activity.subject_params["old_resource_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% end %><% :resource_moved -> %><%= if @activity.subject_params["is_folder"] do %><%= dgettext("activity", "%{profile} moved the folder %{resource}.", +<%= url(~p"/resource/#{@activity.subject_params["resource_uuid"]}") |> URI.decode() %><% end %><% :resource_moved -> %><%= if @activity.subject_params["is_folder"] do %><%= dgettext("activity", "%{profile} moved the folder %{resource}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), resource: @activity.subject_params["resource_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} moved the resource %{resource}.", +<%= url(~p"/resource/#{@activity.subject_params["resource_uuid"]}") |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} moved the resource %{resource}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), resource: @activity.subject_params["resource_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% end %><% :resource_deleted -> %><%= if @activity.subject_params["is_folder"] do %><%= dgettext("activity", "%{profile} deleted the folder %{resource}.", +<%= url(~p"/resource/#{@activity.subject_params["resource_uuid"]}") |> URI.decode() %><% end %><% :resource_deleted -> %><%= if @activity.subject_params["is_folder"] do %><%= dgettext("activity", "%{profile} deleted the folder %{resource}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), resource: @activity.subject_params["resource_title"] diff --git a/lib/web/templates/email/anonymous_participation_confirmation.html.heex b/lib/web/templates/email/anonymous_participation_confirmation.html.heex index 56c20f57..fa37af8f 100644 --- a/lib/web/templates/email/anonymous_participation_confirmation.html.heex +++ b/lib/web/templates/email/anonymous_participation_confirmation.html.heex @@ -63,7 +63,9 @@ url() + |> URI.decode() } target="_blank" style="font-size: 20px; font-family: 'Roboto', Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" diff --git a/lib/web/templates/email/anonymous_participation_confirmation.text.eex b/lib/web/templates/email/anonymous_participation_confirmation.text.eex index ae4943c1..6ed68998 100644 --- a/lib/web/templates/email/anonymous_participation_confirmation.text.eex +++ b/lib/web/templates/email/anonymous_participation_confirmation.text.eex @@ -2,5 +2,5 @@ == <%= gettext "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:", title: @participant.event.title %> <%= gettext "If you didn't trigger this email, you may safely ignore it." %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :participation_email_confirmation, @participant.metadata.confirmation_token) %> +<%= url(~p"/participation/email/confirm/#{@participant.metadata.confirmation_token}") %> <%= ngettext "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button.", "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button.", 1 %> diff --git a/lib/web/templates/email/before_event_notification.html.heex b/lib/web/templates/email/before_event_notification.html.heex index 1013b4c1..fbb22607 100644 --- a/lib/web/templates/email/before_event_notification.html.heex +++ b/lib/web/templates/email/before_event_notification.html.heex @@ -58,9 +58,7 @@ url() |> URI.decode()} target="_blank" style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" > diff --git a/lib/web/templates/email/before_event_notification.text.eex b/lib/web/templates/email/before_event_notification.text.eex index cb72a7cc..c3fe1ff7 100644 --- a/lib/web/templates/email/before_event_notification.text.eex +++ b/lib/web/templates/email/before_event_notification.text.eex @@ -2,5 +2,5 @@ == <%= gettext "Get ready for %{title}", title: @participant.event.title %> <%= gettext "Go to event page" %> -<%= gettext "View the event on: %{link}", link: Routes.page_url(Mobilizon.Web.Endpoint, :event, @participant.event.uuid) %> +<%= gettext "View the event on: %{link}", link: url(~p"/events/#{@participant.event.uuid}") %> <%= gettext "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." %> diff --git a/lib/web/templates/email/email_anonymous_activity.html.heex b/lib/web/templates/email/email_anonymous_activity.html.heex index c3e45e01..74bd229e 100644 --- a/lib/web/templates/email/email_anonymous_activity.html.heex +++ b/lib/web/templates/email/email_anonymous_activity.html.heex @@ -54,9 +54,7 @@ profile: "#{escape_html(display_name_and_username(@activity.author))}", event: - " URI.decode()}\"> + " url() |> URI.decode()}\"> #{escape_html(@activity.subject_params["event_title"])} " } @@ -77,8 +75,10 @@ url() + |> URI.decode() + } target="_blank" style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" > @@ -111,9 +111,7 @@ profile: "#{escape_html(display_name_and_username(@activity.author))}", event: - " URI.decode()}\">#{escape_html(@activity.subject_params["conversation_event_title"])}" + " url() |> URI.decode()}\">#{escape_html(@activity.subject_params["conversation_event_title"])}" } ) |> raw %> @@ -174,8 +172,10 @@ url() + |> URI.decode() + } target="_blank" style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" > diff --git a/lib/web/templates/email/email_anonymous_activity.text.eex b/lib/web/templates/email/email_anonymous_activity.text.eex index 26a5f16f..9d2e35f0 100644 --- a/lib/web/templates/email/email_anonymous_activity.text.eex +++ b/lib/web/templates/email/email_anonymous_activity.text.eex @@ -9,7 +9,7 @@ event: @activity.subject_params["event_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %> +<%= ~p"/events/#{@activity.subject_params["event_uuid"]}" |> url() |> URI.decode() %> <% :conversation -> %> <%= dgettext("activity", "%{profile} has posted a private announcement about event %{event}.", %{ @@ -26,5 +26,5 @@ -- <%= dgettext("activity", "This information is sent privately to you as a person who registered for this event. Share the informations above with other people with caution.") %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["conversation_event_uuid"]) |> URI.decode() %> +<%= ~p"/events/#{@activity.subject_params["conversation_event_uuid"]}" |> url() |> URI.decode() %> <% end %> \ No newline at end of file diff --git a/lib/web/templates/email/email_changed_new.html.heex b/lib/web/templates/email/email_changed_new.html.heex index 0baf06d1..42131cea 100644 --- a/lib/web/templates/email/email_changed_new.html.heex +++ b/lib/web/templates/email/email_changed_new.html.heex @@ -61,9 +61,7 @@ url() |> URI.decode()} target="_blank" style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" > diff --git a/lib/web/templates/email/email_changed_new.text.eex b/lib/web/templates/email/email_changed_new.text.eex index 5b9d7ed9..68e80ac9 100644 --- a/lib/web/templates/email/email_changed_new.text.eex +++ b/lib/web/templates/email/email_changed_new.text.eex @@ -1,5 +1,5 @@ <%= gettext "Confirm new email" %> == <%= gettext "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address.", %{instance: @instance_name} %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :user_email_validation, @token) %> +<%= url(~p"/validate/email/#{@token}") %> <%= gettext "If you didn't trigger the change yourself, please ignore this message." %> diff --git a/lib/web/templates/email/email_direct_activity.html.heex b/lib/web/templates/email/email_direct_activity.html.heex index 0312449a..1a3af16e 100644 --- a/lib/web/templates/email/email_direct_activity.html.heex +++ b/lib/web/templates/email/email_direct_activity.html.heex @@ -94,7 +94,9 @@ URI.decode()}" + ~p"/@#{Mobilizon.Actors.Actor.preferred_username_and_domain(hd(group_activities).group)}" + |> url() + |> URI.decode() } target="_blank" style="text-decoration: none;" @@ -123,7 +125,9 @@ URI.decode()}" + ~p"/@#{Mobilizon.Actors.Actor.preferred_username_and_domain(hd(group_activities).group)}" + |> url() + |> URI.decode() } target="_blank" style="text-decoration: none;color: #474467;font-family: 'Roboto', Helvetica, Arial, sans-serif;font-size: 18px;font-weight: bold;line-height: 25px;" @@ -138,7 +142,9 @@ URI.decode()}" + ~p"/@#{Mobilizon.Actors.Actor.preferred_username_and_domain(hd(group_activities).group)}" + |> url() + |> URI.decode() } target="_blank" style="text-decoration: none;display: block;color: #7a7a7a;font-family: 'Roboto', Helvetica, Arial, sans-serif;font-size: 16px;font-weight: 400;line-height: 25px;" @@ -214,7 +220,9 @@ URI.decode()}/timeline" + ~p"/@#{Mobilizon.Actors.Actor.preferred_username_and_domain(hd(group_activities).group)}/timeline" + |> url() + |> URI.decode() } target="_blank" style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" diff --git a/lib/web/templates/email/email_direct_activity.text.eex b/lib/web/templates/email/email_direct_activity.text.eex index 7658bba4..e0991865 100644 --- a/lib/web/templates/email/email_direct_activity.text.eex +++ b/lib/web/templates/email/email_direct_activity.text.eex @@ -21,7 +21,7 @@ <% end %> <%= if length(group_activities) > 5 do %> <%= dngettext "activity", "View one more activity", "View %{count} more activities", length(group_activities) - 5, %{count: length(group_activities) - 5} %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :actor, Mobilizon.Actors.Actor.preferred_username_and_domain(hd(group_activities).group)) |> URI.decode() %>/timeline +<%= ~p"/@#{Mobilizon.Actors.Actor.preferred_username_and_domain(hd(group_activities).group)}" |> url() |> URI.decode() %>/timeline <% end %> <% end %> <%= dgettext("activity", "Don't want to receive activity notifications? You may change frequency or disable them in your settings.") %> diff --git a/lib/web/templates/email/event_participation_approved.html.heex b/lib/web/templates/email/event_participation_approved.html.heex index eedd2836..7018db80 100644 --- a/lib/web/templates/email/event_participation_approved.html.heex +++ b/lib/web/templates/email/event_participation_approved.html.heex @@ -74,7 +74,7 @@ url() |> URI.decode()} target="_blank" style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" > diff --git a/lib/web/templates/email/event_participation_approved.text.eex b/lib/web/templates/email/event_participation_approved.text.eex index 5b71ca3f..ff93a095 100644 --- a/lib/web/templates/email/event_participation_approved.text.eex +++ b/lib/web/templates/email/event_participation_approved.text.eex @@ -6,6 +6,6 @@ <%= gettext "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %> +<%= ~p"/events/#{@event.uuid}" |> url() |> URI.decode() %> <%= gettext "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." %> diff --git a/lib/web/templates/email/event_participation_confirmed.html.heex b/lib/web/templates/email/event_participation_confirmed.html.heex index 8e57958d..bfb5eec9 100644 --- a/lib/web/templates/email/event_participation_confirmed.html.heex +++ b/lib/web/templates/email/event_participation_confirmed.html.heex @@ -74,7 +74,7 @@ diff --git a/lib/web/templates/email/event_participation_confirmed.text.eex b/lib/web/templates/email/event_participation_confirmed.text.eex index 56f9edad..8831a282 100644 --- a/lib/web/templates/email/event_participation_confirmed.text.eex +++ b/lib/web/templates/email/event_participation_confirmed.text.eex @@ -2,5 +2,5 @@ == <%= gettext "You recently requested to attend %{title}.", title: @event.title %> <%= gettext "You have confirmed your participation. Update your calendar, because you're on the guest list now!" %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %> +<%= url(~p"/events/#{@event.uuid}") %> <%= gettext "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." %> diff --git a/lib/web/templates/email/event_updated.html.heex b/lib/web/templates/email/event_updated.html.heex index 92e53021..b6af2e86 100644 --- a/lib/web/templates/email/event_updated.html.heex +++ b/lib/web/templates/email/event_updated.html.heex @@ -148,7 +148,7 @@ diff --git a/lib/web/templates/email/event_updated.text.eex b/lib/web/templates/email/event_updated.text.eex index 8ac66266..3d0a6775 100644 --- a/lib/web/templates/email/event_updated.text.eex +++ b/lib/web/templates/email/event_updated.text.eex @@ -9,6 +9,6 @@ <%= gettext "New end date:" %> <%= render("date/event_tz_date.text", event: @event, date: @event.ends_on, timezone: @timezone, locale: @locale) %><% end %><%= if MapSet.member?(@changes, :physical_address) do %> <%= gettext "New location:" %> <%= Mobilizon.Addresses.Address.representation(@event.physical_address) %><% end %> -<%= gettext "Visit the updated event page: %{link}", link: Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %> +<%= gettext "Visit the updated event page: %{link}", link: url(~p"/events/#{@event.uuid}") %> <%= ngettext "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button.", "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button.", 1 %> diff --git a/lib/web/templates/email/group_invite.html.heex b/lib/web/templates/email/group_invite.html.heex index 1a34b44e..1dcd1344 100644 --- a/lib/web/templates/email/group_invite.html.heex +++ b/lib/web/templates/email/group_invite.html.heex @@ -76,7 +76,7 @@ diff --git a/lib/web/templates/email/group_invite.text.eex b/lib/web/templates/email/group_invite.text.eex index 72b03aeb..0a2fb01f 100644 --- a/lib/web/templates/email/group_invite.text.eex +++ b/lib/web/templates/email/group_invite.text.eex @@ -3,4 +3,4 @@ <%= gettext "%{inviter} just invited you to join their group %{group}", group: @group.name, inviter: @inviter.name %> <%= @group.url %> <%= gettext "To accept this invitation, head over to your groups." %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :my_groups) %> +<%= url(~p"/groups/me") %> diff --git a/lib/web/templates/email/group_membership_approval.html.heex b/lib/web/templates/email/group_membership_approval.html.heex index acefe2fb..02992d21 100644 --- a/lib/web/templates/email/group_membership_approval.html.heex +++ b/lib/web/templates/email/group_membership_approval.html.heex @@ -48,7 +48,7 @@ "Your membership request for group %{link_start}%{group}%{link_end} has been approved.", group: escape_html(display_name(@group)), link_start: - " URI.decode()}\">", + " url() |> URI.decode()}\">", link_end: "" ) |> raw %> @@ -66,7 +66,9 @@ URI.decode()}" + ~p"/@#{Mobilizon.Actors.Actor.preferred_username_and_domain(@group)}" + |> url() + |> URI.decode() } target="_blank" style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" diff --git a/lib/web/templates/email/group_membership_approval.text.eex b/lib/web/templates/email/group_membership_approval.text.eex index adf657fd..d3df3cea 100644 --- a/lib/web/templates/email/group_membership_approval.text.eex +++ b/lib/web/templates/email/group_membership_approval.text.eex @@ -2,4 +2,4 @@ == <%= gettext "Your membership request for group %{group} has been approved.", group: Mobilizon.Actors.Actor.display_name(@group) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :actor, Mobilizon.Actors.Actor.preferred_username_and_domain(@group)) |> URI.decode() %> +<%= ~p"/@#{Mobilizon.Actors.Actor.preferred_username_and_domain(@group)}" |> url() |> URI.decode() %> diff --git a/lib/web/templates/email/group_membership_rejection.html.heex b/lib/web/templates/email/group_membership_rejection.html.heex index e4d27120..76dfa0b7 100644 --- a/lib/web/templates/email/group_membership_rejection.html.heex +++ b/lib/web/templates/email/group_membership_rejection.html.heex @@ -48,7 +48,7 @@ "Your membership request for group %{link_start}%{group}%{link_end} has been rejected.", group: escape_html(display_name(@group)), link_start: - " URI.decode()}\">", + " url() |> URI.decode()}\">", link_end: "" ) |> raw %> diff --git a/lib/web/templates/email/group_membership_rejection.text.eex b/lib/web/templates/email/group_membership_rejection.text.eex index 7ecf7c2b..f8c629d9 100644 --- a/lib/web/templates/email/group_membership_rejection.text.eex +++ b/lib/web/templates/email/group_membership_rejection.text.eex @@ -2,4 +2,4 @@ == <%= gettext "Your membership request for group %{group} has been rejected.", group: Mobilizon.Actors.Actor.display_name(@group) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :actor, Mobilizon.Actors.Actor.preferred_username_and_domain(@group)) |> URI.decode() %> +<%= ~p"/@#{Mobilizon.Actors.Actor.preferred_username_and_domain(@group)}" |> url() |> URI.decode() %> diff --git a/lib/web/templates/email/notification_each_week.text.eex b/lib/web/templates/email/notification_each_week.text.eex index 2ea9c6df..86bd5d4c 100644 --- a/lib/web/templates/email/notification_each_week.text.eex +++ b/lib/web/templates/email/notification_each_week.text.eex @@ -3,9 +3,9 @@ <%= ngettext "You have one event this week:", "You have %{total} events this week:", @total, total: @total %> <%= if @total > 1 do %> <%= for participation <- @participations do %> - - <%= render("date/event_tz_date.text", event: participation.event, date: participation.event.begins_on, timezone: @timezone, locale: @locale) %> - <%= participation.event.title %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, participation.event.uuid) %> + - <%= render("date/event_tz_date.text", event: participation.event, date: participation.event.begins_on, timezone: @timezone, locale: @locale) %> - <%= participation.event.title %> <%= url(~p"/events/#{participation.event.uuid}") %> <% end %> <% else %> - <%= render("date/event_tz_date.text", event: @participation.event, date: @participation.event.begins_on, timezone: @timezone, locale: @locale) %> - <%= @participation.event.title %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @participation.event.uuid) %> + <%= render("date/event_tz_date.text", event: @participation.event, date: @participation.event.begins_on, timezone: @timezone, locale: @locale) %> - <%= @participation.event.title %> <%= url(~p"/events/#{@participation.event.uuid}") %> <% end %> <%= ngettext "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button.", "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button.", @total %> diff --git a/lib/web/templates/email/on_day_notification.text.eex b/lib/web/templates/email/on_day_notification.text.eex index 0747c291..fe3fabd5 100644 --- a/lib/web/templates/email/on_day_notification.text.eex +++ b/lib/web/templates/email/on_day_notification.text.eex @@ -3,9 +3,9 @@ <%= ngettext "You have one event today:", "You have %{total} events today:", @total, total: @total %> <%= if @total > 1 do %> <%= for participation <- @participations do %> - - <%= render("date/event_tz_date.text", event: participation.event, date: participation.event.begins_on, timezone: @timezone, locale: @locale) %> - <%= participation.event.title %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, participation.event.uuid) %> + - <%= render("date/event_tz_date.text", event: participation.event, date: participation.event.begins_on, timezone: @timezone, locale: @locale) %> - <%= participation.event.title %> <%= url(~p"/events/#{participation.event.uuid}") %> <% end %> <% else %> - <%= render("date/event_tz_date.text", event: @participation.event, date: @participation.event.begins_on, timezone: @timezone, locale: @locale) %> - <%= @participation.event.title %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @participation.event.uuid) %> + <%= render("date/event_tz_date.text", event: @participation.event, date: @participation.event.begins_on, timezone: @timezone, locale: @locale) %> - <%= @participation.event.title %> <%= url(~p"/events/#{@participation.event.uuid}") %> <% end %> <%= ngettext "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button.", "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button.", @total %> diff --git a/lib/web/templates/email/participation/card/_picture.html.heex b/lib/web/templates/email/participation/card/_picture.html.heex index 341ec131..b1b71012 100644 --- a/lib/web/templates/email/participation/card/_picture.html.heex +++ b/lib/web/templates/email/participation/card/_picture.html.heex @@ -7,7 +7,7 @@ align="left" > diff --git a/lib/web/templates/email/participation/card/_title.html.heex b/lib/web/templates/email/participation/card/_title.html.heex index 3d9f6fe0..8b202ceb 100644 --- a/lib/web/templates/email/participation/card/_title.html.heex +++ b/lib/web/templates/email/participation/card/_title.html.heex @@ -7,7 +7,7 @@ align="left" > @@ -35,12 +35,11 @@ <%= if @event.attributed_to do %> URI.decode() } style="color: rgb(254,56,89); font-family: Helvetica,Arial,sans-serif; font-weight: normal; text-align: left; line-height: 1.3; text-decoration: none; vertical-align: baseline; margin: 0; padding: 0; border: 0;" target="_blank" diff --git a/lib/web/templates/email/participation/card/_title.text.eex b/lib/web/templates/email/participation/card/_title.text.eex index 0ffc0a4d..1e9fb06b 100644 --- a/lib/web/templates/email/participation/card/_title.text.eex +++ b/lib/web/templates/email/participation/card/_title.text.eex @@ -1,3 +1,3 @@ <%= gettext("Title: %{title}", title: @event.title) %> -<%= if @event.attributed_to do %><%= gettext("Organizer: %{organizer}", organizer: @event.attributed_to.name || @event.attributed_to.preferred_username) %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :actor, Mobilizon.Actors.Actor.preferred_username_and_domain(@event.attributed_to)) |> URI.decode() %><% else %><%= gettext("Organizer: %{organizer}", organizer: @event.organizer_actor.name || @event.organizer_actor.preferred_username) %><% end %> \ No newline at end of file +<%= if @event.attributed_to do %><%= gettext("Organizer: %{organizer}", organizer: @event.attributed_to.name || @event.attributed_to.preferred_username) %> <%= ~p"/@#{Mobilizon.Actors.Actor.preferred_username_and_domain(@event.attributed_to)}" |> url() |> URI.decode() %><% else %><%= gettext("Organizer: %{organizer}", organizer: @event.organizer_actor.name || @event.organizer_actor.preferred_username) %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/participation/event_card.html.heex b/lib/web/templates/email/participation/event_card.html.heex index 6bf83961..3724441b 100644 --- a/lib/web/templates/email/participation/event_card.html.heex +++ b/lib/web/templates/email/participation/event_card.html.heex @@ -40,7 +40,7 @@ align="center" > @@ -84,7 +84,7 @@ align="center" > @@ -125,7 +125,7 @@ align="left" > diff --git a/lib/web/templates/email/participation/event_card.text.eex b/lib/web/templates/email/participation/event_card.text.eex index c50bdf02..1e1b8935 100644 --- a/lib/web/templates/email/participation/event_card.text.eex +++ b/lib/web/templates/email/participation/event_card.text.eex @@ -2,8 +2,8 @@ <%= render("participation/card/_metadata.text", event: @event, timezone: @timezone, locale: @locale, action: @action) %> -<%= case @action do %><% "participation" -> %><%= gettext("Manage your participation:") %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %><% "event" -> %><%= gettext("Participate:") %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) %><% nil -> %><% end %> +<%= case @action do %><% "participation" -> %><%= gettext("Manage your participation:") %> <%= url(~p"/events/#{@event.uuid}") %><% "event" -> %><%= gettext("Participate:") %> <%= url(~p"/events/#{@event.uuid}") %><% nil -> %><% end %> <%= if @event.description do %><%= gettext("Details:") %> <%= process_description(@event.description) %> -<%= if String.length(@event.description) > 200 do %><%= gettext("Read more: %{url}", url: Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid)) %><% end %><% end %> \ No newline at end of file +<%= if String.length(@event.description) > 200 do %><%= gettext("Read more: %{url}", url: url(~p"/events/#{@event.uuid}")) %><% end %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/pending_participation_notification.html.heex b/lib/web/templates/email/pending_participation_notification.html.heex index d031a734..fb493f4f 100644 --- a/lib/web/templates/email/pending_participation_notification.html.heex +++ b/lib/web/templates/email/pending_participation_notification.html.heex @@ -81,7 +81,7 @@ "/participations"}" + "#{url(~p"/events/#{@event.uuid}") <> "/participations"}" } target="_blank" style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" diff --git a/lib/web/templates/email/pending_participation_notification.text.eex b/lib/web/templates/email/pending_participation_notification.text.eex index 961f32d9..69b2d4d5 100644 --- a/lib/web/templates/email/pending_participation_notification.text.eex +++ b/lib/web/templates/email/pending_participation_notification.text.eex @@ -5,6 +5,6 @@ <%= render("participation/event_card.text", event: @event, timezone: @timezone, locale: @locale, action: nil) %> -<%= gettext "Manage pending requests" %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @event.uuid) <> "/participations" %> +<%= gettext "Manage pending requests" %> <%= url(~p"/events/#{@event.uuid}") <> "/participations" %> <%= gettext "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." %>s diff --git a/lib/web/templates/email/report.html.heex b/lib/web/templates/email/report.html.heex index 9dedeeb8..0a8ad5bb 100644 --- a/lib/web/templates/email/report.html.heex +++ b/lib/web/templates/email/report.html.heex @@ -227,7 +227,7 @@ <%= @report.content %> <% end %> -<%= gettext "View report:" %> <%= Routes.page_url(Mobilizon.Web.Endpoint, :moderation_report, @report.id) %> +<%= gettext "View report:" %> <%= url(~p"/moderation/report/#{@report.id}") %> diff --git a/lib/web/views/email_view.ex b/lib/web/views/email_view.ex index c24aa87f..6890b7af 100644 --- a/lib/web/views/email_view.ex +++ b/lib/web/views/email_view.ex @@ -8,7 +8,7 @@ defmodule Mobilizon.Web.EmailView do alias Mobilizon.Service.Address alias Mobilizon.Service.DateTime, as: DateTimeRenderer alias Mobilizon.Service.Formatter.{HTML, Text} - alias Mobilizon.Web.Router.Helpers, as: Routes + use Mobilizon.Web, :verified_routes import Mobilizon.Web.Gettext import Mobilizon.Service.Metadata.Utils, only: [process_description: 1] import Phoenix.HTML, only: [raw: 1, html_escape: 1, safe_to_string: 1] diff --git a/lib/web/views/json_ld/object_view.ex b/lib/web/views/json_ld/object_view.ex index 3e61880f..cf5928b9 100644 --- a/lib/web/views/json_ld/object_view.ex +++ b/lib/web/views/json_ld/object_view.ex @@ -7,7 +7,6 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do alias Mobilizon.Posts.Post alias Mobilizon.Web.Endpoint alias Mobilizon.Web.JsonLD.ObjectView - alias Mobilizon.Web.Router.Helpers, as: Routes import Mobilizon.Service.Metadata.Utils, only: [process_description: 3] @@ -123,13 +122,7 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do "author" => %{ "@type" => "Organization", "name" => Actor.display_name(post.attributed_to), - "url" => - Endpoint - |> Routes.page_url( - :actor, - Actor.preferred_username_and_domain(post.attributed_to) - ) - |> URI.decode() + "url" => URI.decode(url(~p"/@#{Actor.preferred_username_and_domain(post.attributed_to)}")) }, "datePublished" => post.publish_at, "dateModified" => post.updated_at, @@ -156,7 +149,7 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do "reservationFor" => render("event.json", %{event: participant.event}), "reservationStatus" => reservation_status(participant.role), "modifiedTime" => participant.updated_at, - "modifyReservationUrl" => Routes.page_url(Endpoint, :event, participant.event.uuid) + "modifyReservationUrl" => url(~p"/events/#{participant.event.uuid}") } if participant.code do diff --git a/test/federation/activity_pub/utils_test.exs b/test/federation/activity_pub/utils_test.exs index 83f05868..8dc6ef0f 100644 --- a/test/federation/activity_pub/utils_test.exs +++ b/test/federation/activity_pub/utils_test.exs @@ -29,7 +29,7 @@ defmodule Mobilizon.Federation.ActivityPub.UtilsTest do "content" => "My Comment", "actor" => reply.actor.url, "uuid" => reply.uuid, - "id" => Routes.page_url(Endpoint, :comment, reply.uuid), + "id" => url(~p"/comments/#{reply.uuid}"), "inReplyTo" => comment.url, "attributedTo" => reply.actor.url, "mediaType" => "text/html", diff --git a/test/service/metadata/metadata_test.exs b/test/service/metadata/metadata_test.exs index ef01ea13..a891910c 100644 --- a/test/service/metadata/metadata_test.exs +++ b/test/service/metadata/metadata_test.exs @@ -18,7 +18,7 @@ defmodule Mobilizon.Service.MetadataTest do assert group |> Metadata.build_tags() |> Metadata.Utils.stringify_tags() == String.trim(""" - + """) assert group @@ -26,7 +26,7 @@ defmodule Mobilizon.Service.MetadataTest do |> Metadata.build_tags() |> Metadata.Utils.stringify_tags() == String.trim(""" - + """) end diff --git a/test/support/factory.ex b/test/support/factory.ex index dca2e660..c4a78441 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -9,7 +9,7 @@ defmodule Mobilizon.Factory do alias Mobilizon.Crypto alias Mobilizon.Web.{Endpoint, Upload} - alias Mobilizon.Web.Router.Helpers, as: Routes + use Mobilizon.Web, :verified_routes @spec user_factory :: Mobilizon.Users.User.t() def user_factory do @@ -173,7 +173,7 @@ defmodule Mobilizon.Factory do origin_comment: nil, is_announcement: false, published_at: DateTime.utc_now(), - url: Routes.page_url(Endpoint, :comment, uuid) + url: url(~p"/comments/#{uuid}") } end @@ -199,7 +199,7 @@ defmodule Mobilizon.Factory do metadata: build_list(2, :event_metadata), local: true, publish_at: DateTime.utc_now(), - url: Routes.page_url(Endpoint, :event, uuid), + url: url(~p"/events/#{uuid}"), picture: insert(:media), uuid: uuid, join_options: :free, @@ -344,7 +344,7 @@ defmodule Mobilizon.Factory do title: sequence("todo list"), actor: build(:group), id: uuid, - url: Routes.page_url(Endpoint, :todo_list, uuid), + url: url(~p"/todo-list/#{uuid}"), published_at: DateTime.utc_now() } end @@ -360,7 +360,7 @@ defmodule Mobilizon.Factory do status: false, due_date: Timex.shift(DateTime.utc_now(), hours: 2), assigned_to: build(:actor), - url: Routes.page_url(Endpoint, :todo, uuid), + url: url(~p"/todo/#{uuid}"), creator: build(:actor), published_at: DateTime.utc_now() } @@ -379,7 +379,7 @@ defmodule Mobilizon.Factory do actor: build(:group), creator: build(:actor), parent: nil, - url: Routes.page_url(Endpoint, :resource, uuid), + url: url(~p"/resource/#{uuid}"), published_at: DateTime.utc_now(), path: "/#{title}" } @@ -411,7 +411,7 @@ defmodule Mobilizon.Factory do publish_at: DateTime.utc_now(), picture: insert(:media), media: [], - url: Routes.page_url(Endpoint, :post, uuid) + url: url(~p"/p/#{uuid}") } end @@ -440,7 +440,7 @@ defmodule Mobilizon.Factory do id: uuid, last_comment: nil, comments: [], - url: Routes.page_url(Endpoint, :discussion, group.preferred_username, slug) + url: ~p"/@#{group.preferred_username}/c/#{slug}" } end diff --git a/test/web/controllers/activity_pub_controller_test.exs b/test/web/controllers/activity_pub_controller_test.exs index e9cf2101..e74bd05a 100644 --- a/test/web/controllers/activity_pub_controller_test.exs +++ b/test/web/controllers/activity_pub_controller_test.exs @@ -71,7 +71,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do conn = conn - |> get(Routes.page_url(Endpoint, :event, event.uuid)) + |> get(url(~p"/events/#{event.uuid}")) assert json_response(conn, 200) == PageView.render("event.activity-json", %{conn: %{assigns: %{object: event}}}) @@ -83,7 +83,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do conn = conn |> put_req_header("accept", "application/activity+json") - |> get(Routes.page_url(Endpoint, :event, event.uuid)) + |> get(url(~p"/events/#{event.uuid}")) assert json_response(conn, 404) end @@ -94,7 +94,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do conn = conn |> put_req_header("accept", "application/activity+json") - |> get(Routes.page_url(Endpoint, :event, event.uuid)) + |> get(url(~p"/events/#{event.uuid}")) assert redirected_to(conn) == "https://someremote.url/events/here" end @@ -107,7 +107,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do conn = conn |> put_req_header("accept", "application/activity+json") - |> get(Routes.page_url(Endpoint, :comment, comment.uuid)) + |> get(url(~p"/comments/#{comment.uuid}")) assert json_response(conn, 200) == PageView.render("comment.activity-json", %{conn: %{assigns: %{object: comment}}}) @@ -119,7 +119,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do conn = conn |> put_req_header("accept", "application/activity+json") - |> get(Routes.page_url(Endpoint, :comment, comment.uuid)) + |> get(url(~p"/comments/#{comment.uuid}")) assert redirected_to(conn) == "https://someremote.url/comments/here" end @@ -130,7 +130,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do conn = conn |> put_req_header("accept", "application/activity+json") - |> get(Routes.page_url(Endpoint, :comment, comment.uuid)) + |> get(url(~p"/comments/#{comment.uuid}")) assert json_response(conn, 404) end @@ -567,7 +567,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do conn |> assign(:actor, remote_actor_2) |> put_req_header("accept", "application/activity+json") - |> get(Routes.activity_pub_url(Endpoint, :member, member.id)) + |> get(url(~p"/member/#{member.id}")) assert json_response(conn, 200) == ActorView.render("member.json", %{member: member}) @@ -590,7 +590,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do conn |> assign(:actor, remote_actor_2) |> put_req_header("accept", "application/activity+json") - |> get(Routes.activity_pub_url(Endpoint, :member, member.id)) + |> get(url(~p"/member/#{member.id}")) assert redirected_to(conn) == "https://someremote.url/member/here" end @@ -601,7 +601,7 @@ defmodule Mobilizon.Web.ActivityPubControllerTest do conn = conn |> put_req_header("accept", "application/activity+json") - |> get(Routes.activity_pub_url(Endpoint, :member, member.id)) + |> get(url(~p"/member/#{member.id}")) assert json_response(conn, 404) end diff --git a/test/web/controllers/application_controller_test.exs b/test/web/controllers/application_controller_test.exs index 52215ad8..2d515fcb 100644 --- a/test/web/controllers/application_controller_test.exs +++ b/test/web/controllers/application_controller_test.exs @@ -134,7 +134,7 @@ defmodule Mobilizon.Web.ApplicationControllerTest do res = json_response(conn, 200) - verification_uri = Routes.page_url(Mobilizon.Web.Endpoint, :auth_device) + verification_uri = url(~p"/login/device") assert %{ "device_code" => _device_code, @@ -158,7 +158,7 @@ defmodule Mobilizon.Web.ApplicationControllerTest do res = json_response(conn, 200) - verification_uri = Routes.page_url(Mobilizon.Web.Endpoint, :auth_device) + verification_uri = url(~p"/login/device") assert %{ "device_code" => _device_code, diff --git a/test/web/controllers/feed_controller_test.exs b/test/web/controllers/feed_controller_test.exs index d8163cfc..4d043dc5 100644 --- a/test/web/controllers/feed_controller_test.exs +++ b/test/web/controllers/feed_controller_test.exs @@ -26,7 +26,7 @@ defmodule Mobilizon.Web.FeedControllerTest do conn |> get( Endpoint - |> Routes.feed_url(:actor, actor.preferred_username, "atom") + |> ~p"/@#{actor.preferred_username}/feed/atom" |> URI.decode() ) @@ -63,7 +63,7 @@ defmodule Mobilizon.Web.FeedControllerTest do conn |> get( Endpoint - |> Routes.feed_url(:actor, actor.preferred_username, "atom") + |> ~p"/@#{actor.preferred_username}/feed/atom" |> URI.decode() ) @@ -79,7 +79,7 @@ defmodule Mobilizon.Web.FeedControllerTest do |> put_req_header("accept", "application/atom+xml") |> get( Endpoint - |> Routes.feed_url(:actor, actor.preferred_username, "atom") + |> ~p"/@#{actor.preferred_username}/feed/atom" |> URI.decode() ) @@ -132,11 +132,7 @@ defmodule Mobilizon.Web.FeedControllerTest do conn = conn - |> get( - Endpoint - |> Routes.feed_url(:actor, group.preferred_username, "ics") - |> URI.decode() - ) + |> get(URI.decode(~p"/@#{group.preferred_username}/feed/ics")) assert res = response(conn, 200) assert res =~ "BEGIN:VCALENDAR" @@ -163,11 +159,7 @@ defmodule Mobilizon.Web.FeedControllerTest do conn = conn - |> get( - Endpoint - |> Routes.feed_url(:actor, actor.preferred_username, "ics") - |> URI.decode() - ) + |> get(URI.decode(~p"/@#{actor.preferred_username}/feed/ics")) assert response(conn, 404) end @@ -179,11 +171,7 @@ defmodule Mobilizon.Web.FeedControllerTest do conn = conn |> put_req_header("accept", "text/calendar") - |> get( - Endpoint - |> Routes.feed_url(:actor, actor.preferred_username, "ics") - |> URI.decode() - ) + |> get(URI.decode(~p"/@#{actor.preferred_username}/feed/ics")) assert response(conn, 200) =~ "BEGIN:VCALENDAR" assert response_content_type(conn, :calendar) =~ "charset=utf-8" @@ -209,7 +197,7 @@ defmodule Mobilizon.Web.FeedControllerTest do conn |> get( Endpoint - |> Routes.feed_url(:event, event1.uuid, "ics") + |> ~p"/events/#{event1.uuid}/export/ics" |> URI.decode() ) @@ -241,11 +229,7 @@ defmodule Mobilizon.Web.FeedControllerTest do conn = conn - |> get( - Endpoint - |> Routes.feed_url(:going, ShortUUID.encode!(feed_token.token), "atom") - |> URI.decode() - ) + |> get(URI.decode(~p"/events/going/#{ShortUUID.encode!(feed_token.token)}", "atom")) assert response(conn, 200) =~ "" assert response_content_type(conn, :xml) =~ "charset=utf-8" @@ -279,11 +263,7 @@ defmodule Mobilizon.Web.FeedControllerTest do conn = conn |> put_req_header("accept", "application/atom+xml") - |> get( - Endpoint - |> Routes.feed_url(:going, ShortUUID.encode!(feed_token.token), "atom") - |> URI.decode() - ) + |> get(URI.decode(~p"/events/going/#{ShortUUID.encode!(feed_token.token)}", "atom")) assert response(conn, 200) =~ "" assert response_content_type(conn, :xml) =~ "charset=utf-8" @@ -301,11 +281,7 @@ defmodule Mobilizon.Web.FeedControllerTest do test "it returns 404 for an not existing feed", %{conn: conn} do conn = conn - |> get( - Endpoint - |> Routes.feed_url(:going, "not existing", "atom") - |> URI.decode() - ) + |> get(URI.decode(~p"/events/going/not_existing/atom")) assert response(conn, 404) end @@ -329,11 +305,7 @@ defmodule Mobilizon.Web.FeedControllerTest do conn = conn |> put_req_header("accept", "text/calendar") - |> get( - Endpoint - |> Routes.feed_url(:going, ShortUUID.encode!(feed_token.token), "ics") - |> URI.decode() - ) + |> get(URI.decode(~p"/events/going/#{ShortUUID.encode!(feed_token.token)}", "ics")) assert response(conn, 200) =~ "BEGIN:VCALENDAR" assert response_content_type(conn, :calendar) =~ "charset=utf-8" @@ -363,11 +335,7 @@ defmodule Mobilizon.Web.FeedControllerTest do conn = conn |> put_req_header("accept", "text/calendar") - |> get( - Endpoint - |> Routes.feed_url(:going, ShortUUID.encode!(feed_token.token), "ics") - |> URI.decode() - ) + |> get(URI.decode(~p"/events/going/#{ShortUUID.encode!(feed_token.token)}", "ics")) assert response(conn, 200) =~ "BEGIN:VCALENDAR" assert response_content_type(conn, :calendar) =~ "charset=utf-8" @@ -383,7 +351,7 @@ defmodule Mobilizon.Web.FeedControllerTest do conn |> get( Endpoint - |> Routes.feed_url(:going, "not existing", "ics") + |> ~p"/events/going/not_existing/ics" |> URI.decode() ) diff --git a/test/web/controllers/nodeinfo_controller_test.exs b/test/web/controllers/nodeinfo_controller_test.exs index 8708986e..0b0287ae 100644 --- a/test/web/controllers/nodeinfo_controller_test.exs +++ b/test/web/controllers/nodeinfo_controller_test.exs @@ -12,11 +12,11 @@ defmodule Mobilizon.Web.NodeInfoControllerTest do assert json_response(conn, 200) == %{ "links" => [ %{ - "href" => Routes.node_info_url(Endpoint, :nodeinfo, "2.0"), + "href" => ~p"/.well-known/nodeinfo/2.0Ã", "rel" => "http://nodeinfo.diaspora.software/ns/schema/2.0" }, %{ - "href" => Routes.node_info_url(Endpoint, :nodeinfo, "2.1"), + "href" => ~p"/.well-known/nodeinfo/2.1", "rel" => "http://nodeinfo.diaspora.software/ns/schema/2.1" } ] diff --git a/test/web/controllers/page_controller_test.exs b/test/web/controllers/page_controller_test.exs index 651cdd13..432bec2c 100644 --- a/test/web/controllers/page_controller_test.exs +++ b/test/web/controllers/page_controller_test.exs @@ -53,42 +53,42 @@ defmodule Mobilizon.Web.PageControllerTest do test "GET /events/:uuid", %{conn: conn} do event = insert(:event, visibility: :public) - conn = get(conn, Routes.page_url(Endpoint, :event, event.uuid)) + conn = get(conn, url(~p"/events/#{event.uuid}")) assert html_response(conn, 200) =~ event.title end test "GET /events/:uuid with unlisted event", %{conn: conn} do event = insert(:event, visibility: :unlisted) - conn = get(conn, Routes.page_url(Endpoint, :event, event.uuid)) + conn = get(conn, url(~p"/events/#{event.uuid}")) assert html_response(conn, 200) =~ event.title assert ["noindex"] == get_resp_header(conn, "x-robots-tag") end test "GET /events/:uuid with not existing event", %{conn: conn} do - conn = get(conn, Routes.page_url(Endpoint, :event, "not_existing_event")) + conn = get(conn, ~p"/events/not_existing_event") assert html_response(conn, 404) end test "GET /events/:uuid with event not public", %{conn: conn} do event = insert(:event, visibility: :restricted) - conn = get(conn, Routes.page_url(Endpoint, :event, event.uuid)) + conn = get(conn, url(~p"/events/#{event.uuid}")) assert html_response(conn, 404) end test "GET /comments/:uuid", %{conn: conn} do comment = insert(:comment) - conn = get(conn, Routes.page_url(Endpoint, :comment, comment.uuid)) + conn = get(conn, url(~p"/comments/#{comment.uuid}")) assert html_response(conn, 200) =~ comment.text end test "GET /comments/:uuid with not existing comment", %{conn: conn} do - conn = get(conn, Routes.page_url(Endpoint, :comment, "not_existing_comment")) + conn = get(conn, ~p"/comments/not_existing_comment") assert html_response(conn, 404) end test "GET /comments/:uuid with comment not public", %{conn: conn} do comment = insert(:comment, visibility: :private) - conn = get(conn, Routes.page_url(Endpoint, :comment, comment.uuid)) + conn = get(conn, url(~p"/comments/#{comment.uuid}")) assert html_response(conn, 404) end end