diff options
author | kaniini <ariadne@dereferenced.org> | 2019-07-31 20:27:09 +0000 |
---|---|---|
committer | kaniini <ariadne@dereferenced.org> | 2019-07-31 20:27:09 +0000 |
commit | 0eff6349a05aeb62ace21453346ee4aab9c911db (patch) | |
tree | 17465a21c7d929fe2b8792ca92eba6bf6baca1bd /lib/pleroma/web/ostatus/ostatus.ex | |
parent | cca9d64cb819149c9c48978e8e8571f99af2ef5b (diff) | |
parent | 2536628cac71dcc525ce74e72cdfa8d8562dbbf7 (diff) | |
download | pleroma-1.0.3.tar.gz |
Merge branch 'release/1.0.3' into 'master'v1.0.3
1.0.3 release
See merge request pleroma/pleroma!1514
Diffstat (limited to 'lib/pleroma/web/ostatus/ostatus.ex')
-rw-r--r-- | lib/pleroma/web/ostatus/ostatus.ex | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/pleroma/web/ostatus/ostatus.ex b/lib/pleroma/web/ostatus/ostatus.ex index 6ed089d84..56975926f 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) 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) @@ -118,7 +118,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 @@ -136,7 +136,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 @@ -262,11 +262,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 |