Save tags in object.
authorRoger Braun <roger@rogerbraun.net>
Thu, 18 May 2017 13:16:49 +0000 (15:16 +0200)
committerRoger Braun <roger@rogerbraun.net>
Thu, 18 May 2017 13:16:49 +0000 (15:16 +0200)
lib/pleroma/web/twitter_api/twitter_api.ex
lib/pleroma/web/twitter_api/utils.ex
test/web/twitter_api/twitter_api_test.exs

index 202d648e115a452b4d04736facc58c6661b062ad..6eb69f815391a1a9e2772e8b23244695e174290a 100644 (file)
@@ -36,7 +36,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
          to <- to_for_user_and_mentions(user, mentions, inReplyTo),
          content_html <- make_content_html(status, mentions, attachments),
          context <- make_context(inReplyTo),
-         object <- make_note_data(user.ap_id, to, context, content_html, attachments, inReplyTo) do
+         tags <- Formatter.parse_tags(status),
+         object <- make_note_data(user.ap_id, to, context, content_html, attachments, inReplyTo, tags) do
       ActivityPub.create(to, user, context, object)
     end
   end
index 6f5c9f72722afac75f77432026c449b89a456c6c..b7078b9c6456acbfe5182a2f63ebc9418b23281b 100644 (file)
@@ -11,7 +11,7 @@ defmodule Pleroma.Web.TwitterAPI.Utils do
   def add_attachments(text, attachments) do
     attachment_text = Enum.map(attachments, fn
       (%{"url" => [%{"href" => href} | _]}) ->
-        "<a href='#{href}' class='attachment'>#{href}</a>"
+        "<a href='#{href}' class='attachment'>#{Path.basename(href)}</a>"
       _ -> ""
     end)
     Enum.join([text | attachment_text], "<br>")
@@ -51,14 +51,15 @@ defmodule Pleroma.Web.TwitterAPI.Utils do
   def make_context(%Activity{data: %{"context" => context}}), do: context
   def make_context(_), do: Utils.generate_context_id
 
-  def make_note_data(actor, to, context, content_html, attachments, inReplyTo) do
+  def make_note_data(actor, to, context, content_html, attachments, inReplyTo, tags) do
       object = %{
         "type" => "Note",
         "to" => to,
         "content" => content_html,
         "context" => context,
         "attachment" => attachments,
-        "actor" => actor
+        "actor" => actor,
+        "tag" => tags |> Enum.map(fn ({_, tag}) -> tag end)
       }
 
     if inReplyTo do
index e209602287763896a1e725896109ac3603bfa886..3b6a7a1fe5fdadc7711b8d068161cb9b40dbeebc 100644 (file)
@@ -28,13 +28,13 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
     object = Repo.insert!(%Object{data: object_data})
 
     input = %{
-      "status" => "Hello again, @shp.<script></script>\nThis is on another line.",
+      "status" => "Hello again, @shp.<script></script>\nThis is on another line. #2hu #epic #phantasmagoric",
       "media_ids" => [object.id]
     }
 
     { :ok, activity = %Activity{} } = TwitterAPI.create_status(user, input)
 
-    assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>.<br>This is on another line.<br><a href='http://example.org/image.jpg' class='attachment'>http://example.org/image.jpg</a>"
+    assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>.<br>This is on another line. #2hu #epic #phantasmagoric<br><a href='http://example.org/image.jpg' class='attachment'>image.jpg</a>"
     assert get_in(activity.data, ["object", "type"]) == "Note"
     assert get_in(activity.data, ["object", "actor"]) == user.ap_id
     assert get_in(activity.data, ["actor"]) == user.ap_id
@@ -43,6 +43,9 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
     assert Enum.member?(get_in(activity.data, ["to"]), "shp")
     assert activity.local == true
 
+    # hashtags
+    assert activity.data["object"]["tag"] == ["2hu", "epic", "phantasmagoric"]
+
     # Add a context
     assert is_binary(get_in(activity.data, ["context"]))
     assert is_binary(get_in(activity.data, ["object", "context"]))