Skip to content
Snippets Groups Projects
Commit a92a9dce authored by lain's avatar lain
Browse files

Add invisible tags to TwAPI output.

parent beb7b0ef
Branches
No related tags found
No related merge requests found
defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do
use Pleroma.Web.TwitterAPI.Representers.BaseRepresenter
alias Pleroma.Web.TwitterAPI.Representers.{UserRepresenter, ObjectRepresenter}
alias Pleroma.{Activity, User}
alias Pleroma.{Activity, User, Formatter}
alias Calendar.Strftime
alias Pleroma.Web.TwitterAPI.TwitterAPI
......@@ -72,6 +72,18 @@ def to_map(%Activity{data: %{"type" => "Follow", "published" => created_at, "obj
}
end
def content_with_tags(content, tags) do
tags = tags || []
text_content = HtmlSanitizeEx.strip_tags(content)
found_tags = Formatter.parse_tags(text_content)
|> Enum.map(fn ({_, tag}) -> tag end)
missing_tags = tags -- found_tags
|> Enum.map(&"##{&1}")
Enum.join([content | missing_tags], "<br>\n")
end
def to_map(%Activity{data: %{"object" => %{"content" => content} = object}} = activity, %{user: user} = opts) do
created_at = object["published"] |> date_to_asctime
like_count = object["like_count"] || 0
......@@ -88,6 +100,8 @@ def to_map(%Activity{data: %{"object" => %{"content" => content} = object}} = ac
conversation_id = conversation_id(activity)
content = content_with_tags(content, object["tag"])
%{
"id" => activity.id,
"user" => UserRepresenter.to_map(user, opts),
......
......@@ -23,7 +23,7 @@ def get("https://social.heldscal.la/.well-known/webfinger", [Accept: "applicatio
body: File.read!("test/fixtures/httpoison_mock/https___social.heldscal.la_user_23211.xml")
}}
end
def get("https://social.heldscal.la/.well-known/webfinger", [Accept: "application/xrd+xml"], [params: [resource: "https://social.heldscal.la/user/29191"]]) do
{:ok, %Response{
status_code: 200,
......
......@@ -67,7 +67,7 @@ test "an activity" do
}
}
content_html = "Some content mentioning <a href='#{mentioned_user.ap_id}'>@shp</shp>"
content_html = "Some #content mentioning <a href='#{mentioned_user.ap_id}'>@shp</shp>"
content = HtmlSanitizeEx.strip_tags(content_html)
date = DateTime.from_naive!(~N[2016-05-24 13:26:08.003], "Etc/UTC") |> DateTime.to_iso8601
......@@ -94,7 +94,8 @@ test "an activity" do
],
"like_count" => 5,
"announcement_count" => 3,
"context" => "2hu"
"context" => "2hu",
"tag" => ["nsfw", "content"]
},
"published" => date,
"context" => "2hu"
......@@ -107,8 +108,8 @@ test "an activity" do
"user" => UserRepresenter.to_map(user, %{for: follower}),
"is_local" => true,
"attentions" => [],
"statusnet_html" => content_html,
"text" => content,
"statusnet_html" => content_html <> "<br>\n#nsfw",
"text" => content <> "\n#nsfw",
"is_post_verb" => true,
"created_at" => "Tue May 24 13:26:08 +0000 2016",
"in_reply_to_status_id" => 213123,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment