ostatus: use Object.normalize() instead of Object.get_by_ap_id() directly.
[akkoma] / lib / pleroma / web / ostatus / ostatus.ex
index 5c4a1fd695dde472f522170f3c5f1be4e1c5204a..916c894eb9a80a9338f2643d60eb0950bd000b68 100644 (file)
@@ -8,7 +8,7 @@ defmodule Pleroma.Web.OStatus do
   alias Pleroma.{Repo, User, Web, Object, Activity}
   alias Pleroma.Web.ActivityPub.ActivityPub
   alias Pleroma.Web.{WebFinger, Websub}
-  alias Pleroma.Web.OStatus.{FollowHandler, NoteHandler, DeleteHandler}
+  alias Pleroma.Web.OStatus.{FollowHandler, UnfollowHandler, NoteHandler, DeleteHandler}
   alias Pleroma.Web.ActivityPub.Transmogrifier
 
   def feed_path(user) do
@@ -47,6 +47,9 @@ defmodule Pleroma.Web.OStatus do
               'http://activitystrea.ms/schema/1.0/follow' ->
                 with {:ok, activity} <- FollowHandler.handle(entry, doc), do: activity
 
+              'http://activitystrea.ms/schema/1.0/unfollow' ->
+                with {:ok, activity} <- UnfollowHandler.handle(entry, doc), do: activity
+
               'http://activitystrea.ms/schema/1.0/share' ->
                 with {:ok, activity, retweeted_activity} <- handle_share(entry, doc),
                      do: [activity, retweeted_activity]
@@ -86,7 +89,7 @@ defmodule Pleroma.Web.OStatus do
 
   def make_share(entry, doc, retweeted_activity) do
     with {:ok, actor} <- find_make_or_update_user(doc),
-         %Object{} = object <- Object.get_by_ap_id(retweeted_activity.data["object"]["id"]),
+         %Object{} = object <- Object.normalize(retweeted_activity.data["object"]),
          id when not is_nil(id) <- string_from_xpath("/entry/id", entry),
          {:ok, activity, _object} = ActivityPub.announce(actor, object, id, false) do
       {:ok, activity}
@@ -104,7 +107,7 @@ defmodule Pleroma.Web.OStatus do
 
   def make_favorite(entry, doc, favorited_activity) do
     with {:ok, actor} <- find_make_or_update_user(doc),
-         %Object{} = object <- Object.get_by_ap_id(favorited_activity.data["object"]["id"]),
+         %Object{} = object <- Object.normalize(favorited_activity.data["object"]),
          id when not is_nil(id) <- string_from_xpath("/entry/id", entry),
          {:ok, activity, _object} = ActivityPub.like(actor, object, id, false) do
       {:ok, activity}