Wire up mentions.
authorRoger Braun <roger@rogerbraun.net>
Tue, 25 Apr 2017 16:03:14 +0000 (18:03 +0200)
committerRoger Braun <roger@rogerbraun.net>
Tue, 25 Apr 2017 16:03:14 +0000 (18:03 +0200)
lib/pleroma/web/ostatus/ostatus.ex
test/web/ostatus/ostatus_test.exs

index 8c31ce5aa3e872fe4a47d91adff3c4288d318bbf..65141f8263042561ae8633246bc5281a0f1eb668 100644 (file)
@@ -31,10 +31,7 @@ defmodule Pleroma.Web.OStatus do
   end
 
   # TODO
-  # Parse mention
   # wire up replies
-  # Set correct context
-  # Set correct statusnet ids.
   def handle_note(doc) do
     content_html = string_from_xpath("/entry/content[1]", doc)
 
@@ -52,6 +49,11 @@ defmodule Pleroma.Web.OStatus do
       "https://www.w3.org/ns/activitystreams#Public"
     ]
 
+    mentions = :xmerl_xpath.string('/entry/link[@rel="mentioned" and @ostatus:object-type="http://activitystrea.ms/schema/1.0/person"]', doc)
+    |> Enum.map(fn(person) -> string_from_xpath("@href", person) end)
+
+    to = to ++ mentions
+
     date = string_from_xpath("/entry/published", doc)
 
     object = %{
@@ -66,19 +68,6 @@ defmodule Pleroma.Web.OStatus do
     ActivityPub.create(to, actor, context, object, %{}, date)
   end
 
-  def find_or_make(author, doc) do
-    query = from user in User,
-      where: user.local == false and fragment("? @> ?", user.info, ^%{ostatus_uri: author})
-
-    user = Repo.one(query)
-
-    if is_nil(user) do
-      make_user(doc)
-    else
-      {:ok, user}
-    end
-  end
-
   def find_or_make_user(author_doc) do
     {:xmlObj, :string, uri } = :xmerl_xpath.string('string(/author[1]/uri)', author_doc)
 
index 61dca54469d317fb02c8f2072d5e4ebc3e1783a1..dffebf5a70a3a60e32de9c0d752b8ea7f08dca31 100644 (file)
@@ -10,6 +10,7 @@ defmodule Pleroma.Web.OStatusTest do
     assert activity.data["object"]["type"] == "Note"
     assert activity.data["published"] == "2017-04-23T14:51:03+00:00"
     assert activity.data["context"] == "tag:gs.example.org:4040,2017-04-23:objectType=thread:nonce=f09e22f58abd5c7b"
+    assert "http://pleroma.example.org:4000/users/lain3" in activity.data["to"]
   end
 
   describe "new remote user creation" do