Browse Source

Rich Media: Skip Microformats hashtags

When fixing this problem I incorrectly assumed a.hashtag is
the proper way for detecting hashtags, but it is just something Pleroma and
Mastodon add. Per microformats it should be detected by the presense of rel=tag.

This MR adds a check for rel=tag, but I still left a.hashtag just in case
tags/v1.1.4
rinpatch 5 years ago
parent
commit
035368d363
2 changed files with 17 additions and 1 deletions
  1. +1
    -1
      lib/pleroma/html.ex
  2. +16
    -0
      test/html_test.exs

+ 1
- 1
lib/pleroma/html.ex View File

@@ -89,7 +89,7 @@ defmodule Pleroma.HTML do
Cachex.fetch!(:scrubber_cache, key, fn _key ->
result =
content
|> Floki.filter_out("a.mention,a.hashtag")
|> Floki.filter_out("a.mention,a.hashtag,a[rel~=\"tag\"]")
|> Floki.attribute("a", "href")
|> Enum.at(0)



+ 16
- 0
test/html_test.exs View File

@@ -212,5 +212,21 @@ defmodule Pleroma.HTMLTest do

assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140"
end

test "skips microformats hashtags" do
user = insert(:user)

{:ok, activity} =
CommonAPI.post(user, %{
"status" =>
"<a href=\"https://pleroma.gov/tags/cofe\" rel=\"tag\">#cofe</a> https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140",
"content_type" => "text/html"
})

object = Object.normalize(activity)
{:ok, url} = HTML.extract_first_external_url(object, object.data["content"])

assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140"
end
end
end

Loading…
Cancel
Save