From 0da6ade619b08ab543644a5629c347f65db09e63 Mon Sep 17 00:00:00 2001 From: Roger Braun Date: Thu, 18 May 2017 15:16:49 +0200 Subject: [PATCH] Save tags in object. --- lib/pleroma/web/twitter_api/twitter_api.ex | 3 ++- lib/pleroma/web/twitter_api/utils.ex | 7 ++++--- test/web/twitter_api/twitter_api_test.exs | 7 +++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index 202d648e1..6eb69f815 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -36,7 +36,8 @@ def create_status(%User{} = user, %{"status" => status} = data) 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 diff --git a/lib/pleroma/web/twitter_api/utils.ex b/lib/pleroma/web/twitter_api/utils.ex index 6f5c9f727..b7078b9c6 100644 --- a/lib/pleroma/web/twitter_api/utils.ex +++ b/lib/pleroma/web/twitter_api/utils.ex @@ -11,7 +11,7 @@ def attachments_from_ids(ids) do def add_attachments(text, attachments) do attachment_text = Enum.map(attachments, fn (%{"url" => [%{"href" => href} | _]}) -> - "#{href}" + "#{Path.basename(href)}" _ -> "" end) Enum.join([text | attachment_text], "
") @@ -51,14 +51,15 @@ def make_content_html(status, mentions, attachments) 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 diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index e20960228..3b6a7a1fe 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -28,13 +28,13 @@ test "create a status" do object = Repo.insert!(%Object{data: object_data}) input = %{ - "status" => "Hello again, @shp.\nThis is on another line.", + "status" => "Hello again, @shp.\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, @shp.
This is on another line.
http://example.org/image.jpg" + assert get_in(activity.data, ["object", "content"]) == "Hello again, @shp.
This is on another line. #2hu #epic #phantasmagoric
image.jpg" 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 @@ test "create a status" 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"]))