Merge branch 'develop' of ssh.gitgud.io:lambadalambda/pleroma into develop
authorRoger Braun <roger@rogerbraun.net>
Thu, 1 Jun 2017 09:24:03 +0000 (11:24 +0200)
committerRoger Braun <roger@rogerbraun.net>
Thu, 1 Jun 2017 09:24:03 +0000 (11:24 +0200)
1  2 
lib/pleroma/web/ostatus/activity_representer.ex
lib/pleroma/web/ostatus/ostatus.ex
lib/pleroma/web/twitter_api/utils.ex
test/web/ostatus/activity_representer_test.exs

index f8bcf47180de6beeb2b82343e16ef80daf8bc893,29291b7a5a7f22d31933bc457ba07ee9ae90a50c..df80d137a35b4f9518eda27088a96b9566b247ff
@@@ -152,6 -149,105 +152,26 @@@ defmodule Pleroma.Web.OStatus d
      |> Enum.map(fn (category) -> string_from_xpath("/category/@term", category) end)
    end
  
 -  def handle_note(entry, doc \\ nil) do
 -    content_html = get_content(entry)
 -
 -    [author] = :xmerl_xpath.string('//author[1]', doc)
 -    {:ok, actor} = find_make_or_update_user(author)
 -    inReplyTo = string_from_xpath("//thr:in-reply-to[1]/@ref", entry)
 -
 -    if inReplyTo && !Object.get_cached_by_ap_id(inReplyTo) do
 -      inReplyToHref = string_from_xpath("//thr:in-reply-to[1]/@href", entry)
 -      if inReplyToHref do
 -        fetch_activity_from_html_url(inReplyToHref)
 -      else
 -        Logger.debug("Couldn't find a href link to #{inReplyTo}")
 -      end
 -    end
 -
 -    context = (string_from_xpath("//ostatus:conversation[1]", entry) || "") |> String.trim
 -
 -    attachments = get_attachments(entry)
 -
 -    context = with %{data: %{"context" => context}} <- Object.get_cached_by_ap_id(inReplyTo) do
 -                context
 -              else _e ->
 -                if String.length(context) > 0 do
 -                  context
 -                else
 -                  Utils.generate_context_id
 -                end
 -              end
 -
 -    tags = get_tags(entry)
 -
 -    to = [
 -      "https://www.w3.org/ns/activitystreams#Public",
 -      User.ap_followers(actor)
 -    ]
 -
 -    mentions = :xmerl_xpath.string('//link[@rel="mentioned" and @ostatus:object-type="http://activitystrea.ms/schema/1.0/person"]', entry)
 -    |> Enum.map(fn(person) -> string_from_xpath("@href", person) end)
 -
 -    to = to ++ mentions
 -
 -    date = string_from_xpath("//published", entry)
 -    id = string_from_xpath("//id", entry)
 -
 -    object = %{
 -      "id" => id,
 -      "type" => "Note",
 -      "to" => to,
 -      "content" => content_html,
 -      "published" => date,
 -      "context" => context,
 -      "actor" => actor.ap_id,
 -      "attachment" => attachments,
 -      "tag" => tags
 -    }
 -
 -    object = if inReplyTo do
 -      replied_to_activity = Activity.get_create_activity_by_object_ap_id(inReplyTo)
 -      if replied_to_activity do
 -        object
 -        |> Map.put("inReplyTo", inReplyTo)
 -        |> Map.put("inReplyToStatusId", replied_to_activity.id)
 -      else
 -        object
 -        |> Map.put("inReplyTo", inReplyTo)
 -      end
 -    else
 -      object
 -    end
 -
 -    # TODO: Bail out sooner and use transaction.
 -    if Object.get_by_ap_id(id) do
 -      {:ok, Activity.get_create_activity_by_object_ap_id(id)}
 -    else
 -      ActivityPub.create(to, actor, context, object, %{}, date, false)
 -    end
 -  end
 -
+   def maybe_update(doc, user) do
+     old_data = %{
+       avatar: user.avatar,
+       bio: user.bio,
+       name: user.name
+     }
+     with false <- user.local,
+          avatar <- make_avatar_object(doc),
+          bio when not is_nil(bio) <- string_from_xpath("//author[1]/summary", doc),
+          name when not is_nil(name) <- string_from_xpath("//author[1]/poco:displayName", doc),
+          new_data <- %{avatar: avatar, name: name, bio: bio},
+          false <- new_data == old_data do
+       change = Ecto.Changeset.change(user, new_data)
+       Repo.update(change)
+     else e ->
+       {:ok, user}
+     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
Simple merge
index 06ffbdf698f47f6a0493215cab2edfd4fc3c1453,b23334d55a9120fd1eaac9fccc194bb9663df125..ec75fc7652e9bf44e25474b390e7c4c540b855a5
@@@ -22,10 -18,10 +18,10 @@@ defmodule Pleroma.Web.OStatus.ActivityR
      <id>#{note_activity.data["object"]["id"]}</id>
      <title>New note by #{user.nickname}</title>
      <content type="html">#{note_activity.data["object"]["content"]}</content>
-     <published>#{inserted_at}</published>
-     <updated>#{updated_at}</updated>
+     <published>#{note_activity.data["published"]}</published>
+     <updated>#{note_activity.data["published"]}</updated>
      <ostatus:conversation>#{note_activity.data["context"]}</ostatus:conversation>
 -    <link href="#{note_activity.data["context"]}" rel="ostatus:conversation" />
 +    <link ref="#{note_activity.data["context"]}" rel="ostatus:conversation" />
      <link type="application/atom+xml" href="#{note_activity.data["object"]["id"]}" rel="self" />
      <category term="2hu"/>
      <link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
      <id>#{answer.data["object"]["id"]}</id>
      <title>New note by #{user.nickname}</title>
      <content type="html">#{answer.data["object"]["content"]}</content>
-     <published>#{inserted_at}</published>
-     <updated>#{updated_at}</updated>
+     <published>#{answer.data["published"]}</published>
+     <updated>#{answer.data["published"]}</updated>
      <ostatus:conversation>#{answer.data["context"]}</ostatus:conversation>
 -    <link href="#{answer.data["context"]}" rel="ostatus:conversation" />
 +    <link ref="#{answer.data["context"]}" rel="ostatus:conversation" />
      <link type="application/atom+xml" href="#{answer.data["object"]["id"]}" rel="self" />
      <category term="2hu"/>
      <thr:in-reply-to ref="#{note.data["object"]["id"]}" />
      <id>#{announce.data["id"]}</id>
      <title>#{user.nickname} repeated a notice</title>
      <content type="html">RT #{note.data["object"]["content"]}</content>
-     <published>#{inserted_at}</published>
-     <updated>#{updated_at}</updated>
+     <published>#{announce.data["published"]}</published>
+     <updated>#{announce.data["published"]}</updated>
      <ostatus:conversation>#{announce.data["context"]}</ostatus:conversation>
 -    <link href="#{announce.data["context"]}" rel="ostatus:conversation" />
 +    <link ref="#{announce.data["context"]}" rel="ostatus:conversation" />
      <link rel="self" type="application/atom+xml" href="#{announce.data["id"]}"/>
      <activity:object>
        #{note_xml}