diff options
author | feld <feld@feld.me> | 2020-06-11 14:04:51 +0000 |
---|---|---|
committer | feld <feld@feld.me> | 2020-06-11 14:04:51 +0000 |
commit | 5d6ec6e5fc9b00d367568dd111816b90cddad02b (patch) | |
tree | babf4d13ab2bfde56c17d7e1a8c6d7e690a58de3 | |
parent | 7aa6c82937090ca6f2298dee0ef894954ca2f129 (diff) | |
parent | b28cec4271c52d55f6e6cf8a1bcdb41efec3ef03 (diff) | |
download | pleroma-5d6ec6e5fc9b00d367568dd111816b90cddad02b.tar.gz |
Merge branch '1794-hashtags-construction-from-uri' into 'develop'
[#1794] Hashtags search fix for URI as query string
Closes #1794
See merge request pleroma/pleroma!2641
-rw-r--r-- | lib/pleroma/web/mastodon_api/controllers/search_controller.ex | 14 | ||||
-rw-r--r-- | test/web/mastodon_api/controllers/search_controller_test.exs | 9 |
2 files changed, 23 insertions, 0 deletions
diff --git a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex index 8840fc19c..46bcf4228 100644 --- a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex @@ -124,6 +124,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do defp prepare_tags(query, add_joined_tag \\ true) do tags = query + |> preprocess_uri_query() |> String.split(~r/[^#\w]+/u, trim: true) |> Enum.uniq_by(&String.downcase/1) @@ -147,6 +148,19 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do end end + # If `query` is a URI, returns last component of its path, otherwise returns `query` + defp preprocess_uri_query(query) do + if query =~ ~r/https?:\/\// do + query + |> URI.parse() + |> Map.get(:path) + |> String.split("/") + |> Enum.at(-1) + else + query + end + end + defp joined_tag(tags) do tags |> Enum.map(fn tag -> String.capitalize(tag) end) diff --git a/test/web/mastodon_api/controllers/search_controller_test.exs b/test/web/mastodon_api/controllers/search_controller_test.exs index 84d46895e..0e025adca 100644 --- a/test/web/mastodon_api/controllers/search_controller_test.exs +++ b/test/web/mastodon_api/controllers/search_controller_test.exs @@ -111,6 +111,15 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do %{"name" => "prone", "url" => "#{Web.base_url()}/tag/prone"}, %{"name" => "AccidentProne", "url" => "#{Web.base_url()}/tag/AccidentProne"} ] + + results = + conn + |> get("/api/v2/search?#{URI.encode_query(%{q: "https://shpposter.club/users/shpuld"})}") + |> json_response_and_validate_schema(200) + + assert results["hashtags"] == [ + %{"name" => "shpuld", "url" => "#{Web.base_url()}/tag/shpuld"} + ] end test "excludes a blocked users from search results", %{conn: conn} do |