commit: 49ba6c88655669fe83b8c58d4070bd7ca5f215f1
parent 842090945aa5700faa222e47985cad542d375314
Author: Mark Felder <feld@feld.me>
Date: Wed, 30 Jul 2025 17:07:22 -0700
Rework the URL encoding so it is a public function: Pleroma.HTTP.encode_url/1
Diffstat:
2 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/lib/pleroma/http.ex b/lib/pleroma/http.ex
@@ -131,4 +131,31 @@ defmodule Pleroma.HTTP do
defp default_middleware,
do: [Tesla.Middleware.FollowRedirects, Pleroma.Tesla.Middleware.EncodeUrl]
+
+ def encode_url(url) when is_binary(url) do
+ URI.parse(url)
+ |> then(fn parsed ->
+ path = encode_path(parsed.path)
+ query = encode_query(parsed.query)
+
+ %{parsed | path: path, query: query}
+ end)
+ |> URI.to_string()
+ end
+
+ defp encode_path(nil), do: nil
+
+ defp encode_path(path) when is_binary(path) do
+ path
+ |> URI.decode()
+ |> URI.encode()
+ end
+
+ defp encode_query(nil), do: nil
+
+ defp encode_query(query) when is_binary(query) do
+ query
+ |> URI.decode_query()
+ |> URI.encode_query()
+ end
end
diff --git a/lib/pleroma/tesla/middleware/encode_url.ex b/lib/pleroma/tesla/middleware/encode_url.ex
@@ -17,7 +17,7 @@ defmodule Pleroma.Tesla.Middleware.EncodeUrl do
@impl Tesla.Middleware
def call(%Tesla.Env{url: url} = env, next, _) do
- url = encode_url(url)
+ url = Pleroma.HTTP.encode_url(url)
env = %{env | url: url}
@@ -26,31 +26,4 @@ defmodule Pleroma.Tesla.Middleware.EncodeUrl do
err -> err
end
end
-
- defp encode_url(url) when is_binary(url) do
- URI.parse(url)
- |> then(fn parsed ->
- path = encode_path(parsed.path)
- query = encode_query(parsed.query)
-
- %{parsed | path: path, query: query}
- end)
- |> URI.to_string()
- end
-
- defp encode_path(nil), do: nil
-
- defp encode_path(path) when is_binary(path) do
- path
- |> URI.decode()
- |> URI.encode()
- end
-
- defp encode_query(nil), do: nil
-
- defp encode_query(query) when is_binary(query) do
- query
- |> URI.decode_query()
- |> URI.encode_query()
- end
end