projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Pagination: Don't be dos'd by random parameters.
[akkoma]
/
lib
/
pleroma
/
web
/
activity_pub
/
transmogrifier.ex
diff --git
a/lib/pleroma/web/activity_pub/transmogrifier.ex
b/lib/pleroma/web/activity_pub/transmogrifier.ex
index d3dc637dac34a3f2391517b2a915206f8b2349de..99cdf91ab1bc663e6e5c29c9cb61ca0f024426c3 100644
(file)
--- a/
lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/
lib/pleroma/web/activity_pub/transmogrifier.ex
@@
-312,15
+312,16
@@
defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def fix_emoji(object), do: object
def fix_tag(%{"tag" => tag} = object) when is_list(tag) do
def fix_emoji(object), do: object
def fix_tag(%{"tag" => tag} = object) when is_list(tag) do
-
hash
tags =
+ tags =
tag
|> Enum.filter(fn data -> data["type"] == "Hashtag" and data["name"] end)
tag
|> Enum.filter(fn data -> data["type"] == "Hashtag" and data["name"] end)
- |> Enum.map(fn
- %{"name" => "#" <> hashtag} -> String.downcase(hashtag)
- %{"name" => hashtag} -> String.downcase(hashtag)
+ |> Enum.map(fn %{"name" => name} ->
+ name
+ |> String.slice(1..-1)
+ |> String.downcase()
end)
end)
- Map.put(object, "
hashtags", hash
tags)
+ Map.put(object, "
tag", tag ++
tags)
end
def fix_tag(%{"tag" => %{} = tag} = object) do
end
def fix_tag(%{"tag" => %{} = tag} = object) do
@@
-652,7
+653,9
@@
defmodule Pleroma.Web.ActivityPub.Transmogrifier do
@spec get_obj_helper(String.t(), Keyword.t()) :: {:ok, Object.t()} | nil
def get_obj_helper(id, options \\ []) do
@spec get_obj_helper(String.t(), Keyword.t()) :: {:ok, Object.t()} | nil
def get_obj_helper(id, options \\ []) do
- case Object.normalize(id, true, options) do
+ options = Keyword.put(options, :fetch, true)
+
+ case Object.normalize(id, options) do
%Object{} = object -> {:ok, object}
_ -> nil
end
%Object{} = object -> {:ok, object}
_ -> nil
end
@@
-671,7
+674,7
@@
defmodule Pleroma.Web.ActivityPub.Transmogrifier do
"actor" => attributed_to,
"object" => data
}) do
"actor" => attributed_to,
"object" => data
}) do
- {:ok, Object.normalize(activity)}
+ {:ok, Object.normalize(activity
, fetch: false
)}
else
_ -> get_obj_helper(object_id)
end
else
_ -> get_obj_helper(object_id)
end
@@
-762,7
+765,7
@@
defmodule Pleroma.Web.ActivityPub.Transmogrifier do
when activity_type in ["Create", "Listen"] do
object =
object_id
when activity_type in ["Create", "Listen"] do
object =
object_id
- |> Object.normalize()
+ |> Object.normalize(
fetch: false
)
|> Map.get(:data)
|> prepare_object
|> Map.get(:data)
|> prepare_object
@@
-778,7
+781,7
@@
defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def prepare_outgoing(%{"type" => "Announce", "actor" => ap_id, "object" => object_id} = data) do
object =
object_id
def prepare_outgoing(%{"type" => "Announce", "actor" => ap_id, "object" => object_id} = data) do
object =
object_id
- |> Object.normalize()
+ |> Object.normalize(
fetch: false
)
data =
if Visibility.is_private?(object) && object.data["actor"] == ap_id do
data =
if Visibility.is_private?(object) && object.data["actor"] == ap_id do
@@
-864,7
+867,7
@@
defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def add_hashtags(object) do
tags =
def add_hashtags(object) do
tags =
- (
(object["hashtags"] || []) ++ (object["tag"] || [])
)
+ (
object["tag"] || []
)
|> Enum.map(fn
# Expand internal representation tags into AS2 tags.
tag when is_binary(tag) ->
|> Enum.map(fn
# Expand internal representation tags into AS2 tags.
tag when is_binary(tag) ->
@@
-918,7
+921,7
@@
defmodule Pleroma.Web.ActivityPub.Transmogrifier do
defp build_emoji_tag({name, url}) do
%{
defp build_emoji_tag({name, url}) do
%{
- "icon" => %{"url" =>
url
, "type" => "Image"},
+ "icon" => %{"url" =>
"#{URI.encode(url)}"
, "type" => "Image"},
"name" => ":" <> name <> ":",
"type" => "Emoji",
"updated" => "1970-01-01T00:00:00Z",
"name" => ":" <> name <> ":",
"type" => "Emoji",
"updated" => "1970-01-01T00:00:00Z",
@@
-935,7
+938,7
@@
defmodule Pleroma.Web.ActivityPub.Transmogrifier do
end
def set_sensitive(object) do
end
def set_sensitive(object) do
- tags = object["
hashtags"] || object["
tag"] || []
+ tags = object["tag"] || []
Map.put(object, "sensitive", "nsfw" in tags)
end
Map.put(object, "sensitive", "nsfw" in tags)
end