diff options
author | Maksim <parallel588@gmail.com> | 2019-07-31 18:35:15 +0000 |
---|---|---|
committer | kaniini <ariadne@dereferenced.org> | 2019-07-31 18:35:15 +0000 |
commit | 6eb33e73035789fd9160e697617feb30a3070589 (patch) | |
tree | 606920cbd22678870b42c55082fc56dbad70bdf9 /lib | |
parent | 8980c1c769dab3df91d34a90407d31e09788beff (diff) | |
download | pleroma-6eb33e73035789fd9160e697617feb30a3070589.tar.gz |
test for Pleroma.Web.CommonAPI.Utils.get_by_id_or_ap_id
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/flake_id.ex | 10 | ||||
-rw-r--r-- | lib/pleroma/web/common_api/utils.ex | 7 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/pleroma/flake_id.ex b/lib/pleroma/flake_id.ex index 58ab3650d..ca0610abc 100644 --- a/lib/pleroma/flake_id.ex +++ b/lib/pleroma/flake_id.ex @@ -66,6 +66,16 @@ defmodule Pleroma.FlakeId do @spec get :: binary def get, do: to_string(:gen_server.call(:flake, :get)) + # checks that ID is is valid FlakeID + # + @spec is_flake_id?(String.t()) :: boolean + def is_flake_id?(id), do: is_flake_id?(String.to_charlist(id), true) + defp is_flake_id?([c | cs], true) when c >= ?0 and c <= ?9, do: is_flake_id?(cs, true) + defp is_flake_id?([c | cs], true) when c >= ?A and c <= ?Z, do: is_flake_id?(cs, true) + defp is_flake_id?([c | cs], true) when c >= ?a and c <= ?z, do: is_flake_id?(cs, true) + defp is_flake_id?([], true), do: true + defp is_flake_id?(_, _), do: false + # -- Ecto.Type API @impl Ecto.Type def type, do: :uuid diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index d80fffa26..c8a743e8e 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -24,7 +24,12 @@ defmodule Pleroma.Web.CommonAPI.Utils do # This is a hack for twidere. def get_by_id_or_ap_id(id) do activity = - Activity.get_by_id_with_object(id) || Activity.get_create_by_object_ap_id_with_object(id) + with true <- Pleroma.FlakeId.is_flake_id?(id), + %Activity{} = activity <- Activity.get_by_id_with_object(id) do + activity + else + _ -> Activity.get_create_by_object_ap_id_with_object(id) + end activity && if activity.data["type"] == "Create" do |