diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/ostatus/handlers/follow_handler.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/ostatus/handlers/note_handler.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/ostatus/handlers/unfollow_handler.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/ostatus/ostatus.ex | 17 | 
4 files changed, 15 insertions, 8 deletions
diff --git a/lib/pleroma/web/ostatus/handlers/follow_handler.ex b/lib/pleroma/web/ostatus/handlers/follow_handler.ex index 263d3b2dc..03e4cbbb0 100644 --- a/lib/pleroma/web/ostatus/handlers/follow_handler.ex +++ b/lib/pleroma/web/ostatus/handlers/follow_handler.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.OStatus.FollowHandler do    alias Pleroma.Web.XML    def handle(entry, doc) do -    with {:ok, actor} <- OStatus.find_make_or_update_user(doc), +    with {:ok, actor} <- OStatus.find_make_or_update_actor(doc),           id when not is_nil(id) <- XML.string_from_xpath("/entry/id", entry),           followed_uri when not is_nil(followed_uri) <-             XML.string_from_xpath("/entry/activity:object/id", entry), diff --git a/lib/pleroma/web/ostatus/handlers/note_handler.ex b/lib/pleroma/web/ostatus/handlers/note_handler.ex index 3005e8f57..7fae14f7b 100644 --- a/lib/pleroma/web/ostatus/handlers/note_handler.ex +++ b/lib/pleroma/web/ostatus/handlers/note_handler.ex @@ -111,7 +111,7 @@ defmodule Pleroma.Web.OStatus.NoteHandler do      with id <- XML.string_from_xpath("//id", entry),           activity when is_nil(activity) <- Activity.get_create_by_object_ap_id_with_object(id),           [author] <- :xmerl_xpath.string('//author[1]', doc), -         {:ok, actor} <- OStatus.find_make_or_update_user(author), +         {:ok, actor} <- OStatus.find_make_or_update_actor(author),           content_html <- OStatus.get_content(entry),           cw <- OStatus.get_cw(entry),           in_reply_to <- XML.string_from_xpath("//thr:in-reply-to[1]/@ref", entry), diff --git a/lib/pleroma/web/ostatus/handlers/unfollow_handler.ex b/lib/pleroma/web/ostatus/handlers/unfollow_handler.ex index 6596ada3b..2062432e3 100644 --- a/lib/pleroma/web/ostatus/handlers/unfollow_handler.ex +++ b/lib/pleroma/web/ostatus/handlers/unfollow_handler.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.OStatus.UnfollowHandler do    alias Pleroma.Web.XML    def handle(entry, doc) do -    with {:ok, actor} <- OStatus.find_make_or_update_user(doc), +    with {:ok, actor} <- OStatus.find_make_or_update_actor(doc),           id when not is_nil(id) <- XML.string_from_xpath("/entry/id", entry),           followed_uri when not is_nil(followed_uri) <-             XML.string_from_xpath("/entry/activity:object/id", entry), diff --git a/lib/pleroma/web/ostatus/ostatus.ex b/lib/pleroma/web/ostatus/ostatus.ex index 502410c83..331cbc0b7 100644 --- a/lib/pleroma/web/ostatus/ostatus.ex +++ b/lib/pleroma/web/ostatus/ostatus.ex @@ -56,7 +56,7 @@ defmodule Pleroma.Web.OStatus do    def handle_incoming(xml_string, options \\ []) do      with doc when doc != :error <- parse_document(xml_string) do -      with {:ok, actor_user} <- find_make_or_update_user(doc), +      with {:ok, actor_user} <- find_make_or_update_actor(doc),             do: Pleroma.Instances.set_reachable(actor_user.ap_id)        entries = :xmerl_xpath.string('//entry', doc) @@ -120,7 +120,7 @@ defmodule Pleroma.Web.OStatus do    end    def make_share(entry, doc, retweeted_activity) do -    with {:ok, actor} <- find_make_or_update_user(doc), +    with {:ok, actor} <- find_make_or_update_actor(doc),           %Object{} = object <- Object.normalize(retweeted_activity),           id when not is_nil(id) <- string_from_xpath("/entry/id", entry),           {:ok, activity, _object} = ActivityPub.announce(actor, object, id, false) do @@ -138,7 +138,7 @@ defmodule Pleroma.Web.OStatus do    end    def make_favorite(entry, doc, favorited_activity) do -    with {:ok, actor} <- find_make_or_update_user(doc), +    with {:ok, actor} <- find_make_or_update_actor(doc),           %Object{} = object <- Object.normalize(favorited_activity),           id when not is_nil(id) <- string_from_xpath("/entry/id", entry),           {:ok, activity, _object} = ActivityPub.like(actor, object, id, false) do @@ -264,11 +264,18 @@ defmodule Pleroma.Web.OStatus do      end    end -  def find_make_or_update_user(doc) do +  def find_make_or_update_actor(doc) do      uri = string_from_xpath("//author/uri[1]", doc) -    with {:ok, user} <- find_or_make_user(uri) do +    with {:ok, %User{} = user} <- find_or_make_user(uri), +         {:ap_enabled, false} <- {:ap_enabled, User.ap_enabled?(user)} do        maybe_update(doc, user) +    else +      {:ap_enabled, true} -> +        {:error, :invalid_protocol} + +      _ -> +        {:error, :unknown_user}      end    end  | 
