microblogpub federation fixes (#288)
[akkoma] / lib / pleroma / web / activity_pub / activity_pub.ex
index 7ed6178232bb0153a337538040a7abd485dfb64d..254d91a7e9f9911af91c8ad02fe472d968be2f96 100644 (file)
@@ -507,7 +507,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
   defp fetch_paginated_optimized(query, opts, pagination) do
     # Note: tag-filtering funcs may apply "ORDER BY objects.id DESC",
     #   and extra sorting on "activities.id DESC NULLS LAST" would worse the query plan
-    IO.inspect(Repo.to_sql(:all, query))
     opts = Map.put(opts, :skip_extra_order, true)
 
     Pagination.fetch_paginated(query, opts, pagination)
@@ -1531,6 +1530,18 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
     # we request WebFinger here
     nickname = additional[:nickname_from_acct] || generate_nickname(data)
 
+    # also_known_as must be a URL
+    also_known_as =
+      data
+      |> Map.get("alsoKnownAs", [])
+      |> Enum.filter(fn url ->
+        case URI.parse(url) do
+          %URI{scheme: "http"} -> true
+          %URI{scheme: "https"} -> true
+          _ -> false
+        end
+      end)
+
     %{
       ap_id: data["id"],
       uri: get_actor_url(data["url"]),
@@ -1548,7 +1559,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
       featured_address: featured_address,
       bio: data["summary"] || "",
       actor_type: actor_type,
-      also_known_as: Map.get(data, "alsoKnownAs", []),
+      also_known_as: also_known_as,
       public_key: public_key,
       inbox: data["inbox"],
       shared_inbox: shared_inbox,