From aee44ac25e58d1e46d5b078d36f3d72757680b51 Mon Sep 17 00:00:00 2001 From: Moon Man Date: Tue, 21 May 2024 23:50:35 +0000 Subject: [PATCH] properly get actor from key id for Streams. --- lib/pleroma/signature.ex | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/pleroma/signature.ex b/lib/pleroma/signature.ex index 8fd422a6e..1aef7f82e 100644 --- a/lib/pleroma/signature.ex +++ b/lib/pleroma/signature.ex @@ -17,6 +17,7 @@ def key_id_to_actor_id(key_id) do key_id |> URI.parse() |> Map.put(:fragment, nil) + |> remove_query() |> remove_suffix(@known_suffixes) maybe_ap_id = URI.to_string(uri) @@ -33,6 +34,23 @@ def key_id_to_actor_id(key_id) do end end + defp remove_query(uri) do + if uri.query do + new_query = + URI.decode_query(uri.query) + |> Map.delete("operation") + |> URI.encode_query() + |> case do + "" -> nil + query -> query + end + + Map.put(uri, :query, new_query) + else + uri + end + end + defp remove_suffix(uri, [test | rest]) do if not is_nil(uri.path) and String.ends_with?(uri.path, test) do Map.put(uri, :path, String.replace(uri.path, test, ""))