aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRoger Braun <roger@rogerbraun.net>2017-05-02 17:13:41 +0200
committerRoger Braun <roger@rogerbraun.net>2017-05-02 17:13:41 +0200
commit102455bf296165a88578a04f0ded259c32349d7f (patch)
tree63c5d2894fa893093a5324dc3ff19f1f962c297d /lib
parent945b4b55e651341ae9452c9799f432ec2de11787 (diff)
downloadpleroma-102455bf296165a88578a04f0ded259c32349d7f.tar.gz
Add avatar updating from incoming messages.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/ostatus/ostatus.ex17
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/pleroma/web/ostatus/ostatus.ex b/lib/pleroma/web/ostatus/ostatus.ex
index db32d2c35..4c72e9cd1 100644
--- a/lib/pleroma/web/ostatus/ostatus.ex
+++ b/lib/pleroma/web/ostatus/ostatus.ex
@@ -90,6 +90,19 @@ defmodule Pleroma.Web.OStatus do
end
end
+ def find_make_or_update_user(doc) do
+ uri = string_from_xpath("//author/uri[1]", doc)
+ with {:ok, user} <- find_or_make_user(uri) do
+ avatar = make_avatar_object(doc)
+ if user.avatar != avatar do
+ change = Ecto.Changeset.change(user, %{avatar: avatar})
+ Repo.update(change)
+ else
+ {:ok, user}
+ end
+ end
+ end
+
def find_or_make_user(uri) do
query = from user in User,
where: user.local == false and fragment("? @> ?", user.info, ^%{uri: uri})
@@ -121,8 +134,8 @@ defmodule Pleroma.Web.OStatus do
# TODO: Just takes the first one for now.
def make_avatar_object(author_doc) do
- href = string_from_xpath("/feed/author[1]/link[@rel=\"avatar\"]/@href", author_doc)
- type = string_from_xpath("/feed/author[1]/link[@rel=\"avatar\"]/@type", author_doc)
+ href = string_from_xpath("//author[1]/link[@rel=\"avatar\"]/@href", author_doc)
+ type = string_from_xpath("//author[1]/link[@rel=\"avatar\"]/@type", author_doc)
if href do
%{