[#1794] Fixes URI query handling for hashtags extraction in search.
This commit is contained in:
parent
7aa6c82937
commit
b28cec4271
|
@ -124,6 +124,7 @@ defp resource_search(:v1, "hashtags", query, _options) do
|
||||||
defp prepare_tags(query, add_joined_tag \\ true) do
|
defp prepare_tags(query, add_joined_tag \\ true) do
|
||||||
tags =
|
tags =
|
||||||
query
|
query
|
||||||
|
|> preprocess_uri_query()
|
||||||
|> String.split(~r/[^#\w]+/u, trim: true)
|
|> String.split(~r/[^#\w]+/u, trim: true)
|
||||||
|> Enum.uniq_by(&String.downcase/1)
|
|> Enum.uniq_by(&String.downcase/1)
|
||||||
|
|
||||||
|
@ -147,6 +148,19 @@ defp prepare_tags(query, add_joined_tag \\ true) do
|
||||||
end
|
end
|
||||||
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
|
defp joined_tag(tags) do
|
||||||
tags
|
tags
|
||||||
|> Enum.map(fn tag -> String.capitalize(tag) end)
|
|> Enum.map(fn tag -> String.capitalize(tag) end)
|
||||||
|
|
|
@ -111,6 +111,15 @@ test "constructs hashtags from search query", %{conn: conn} do
|
||||||
%{"name" => "prone", "url" => "#{Web.base_url()}/tag/prone"},
|
%{"name" => "prone", "url" => "#{Web.base_url()}/tag/prone"},
|
||||||
%{"name" => "AccidentProne", "url" => "#{Web.base_url()}/tag/AccidentProne"}
|
%{"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
|
end
|
||||||
|
|
||||||
test "excludes a blocked users from search results", %{conn: conn} do
|
test "excludes a blocked users from search results", %{conn: conn} do
|
||||||
|
|
Loading…
Reference in New Issue