Rework the URL encoding so it is a public function: Pleroma.HTTP.encode_url/1
This commit is contained in:
parent
842090945a
commit
49ba6c8865
2 changed files with 28 additions and 28 deletions
|
|
@ -131,4 +131,31 @@ defmodule Pleroma.HTTP do
|
||||||
|
|
||||||
defp default_middleware,
|
defp default_middleware,
|
||||||
do: [Tesla.Middleware.FollowRedirects, Pleroma.Tesla.Middleware.EncodeUrl]
|
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
|
end
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ defmodule Pleroma.Tesla.Middleware.EncodeUrl do
|
||||||
|
|
||||||
@impl Tesla.Middleware
|
@impl Tesla.Middleware
|
||||||
def call(%Tesla.Env{url: url} = env, next, _) do
|
def call(%Tesla.Env{url: url} = env, next, _) do
|
||||||
url = encode_url(url)
|
url = Pleroma.HTTP.encode_url(url)
|
||||||
|
|
||||||
env = %{env | url: url}
|
env = %{env | url: url}
|
||||||
|
|
||||||
|
|
@ -26,31 +26,4 @@ defmodule Pleroma.Tesla.Middleware.EncodeUrl do
|
||||||
err -> err
|
err -> err
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue