Browse Source

Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into feature/pinned-posts

tags/v0.9.9
Egor Kislitsyn 5 years ago
parent
commit
f24087f96e
2 changed files with 26 additions and 5 deletions
  1. +8
    -5
      lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
  2. +18
    -0
      test/web/mastodon_api/mastodon_api_controller_test.exs

+ 8
- 5
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex View File

@@ -740,11 +740,14 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
json(conn, %{})
end

def status_search(query) do
def status_search(user, query) do
fetched =
if Regex.match?(~r/https?:/, query) do
with {:ok, object} <- ActivityPub.fetch_object_from_id(query) do
[Activity.get_create_activity_by_object_ap_id(object.data["id"])]
with {:ok, object} <- ActivityPub.fetch_object_from_id(query),
%Activity{} = activity <-
Activity.get_create_activity_by_object_ap_id(object.data["id"]),
true <- ActivityPub.visible_for_user?(activity, user) do
[activity]
else
_e -> []
end
@@ -771,7 +774,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
def search2(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
accounts = User.search(query, params["resolve"] == "true")

statuses = status_search(query)
statuses = status_search(user, query)

tags_path = Web.base_url() <> "/tag/"

@@ -795,7 +798,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
def search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
accounts = User.search(query, params["resolve"] == "true")

statuses = status_search(query)
statuses = status_search(user, query)

tags =
String.split(query)


+ 18
- 0
test/web/mastodon_api/mastodon_api_controller_test.exs View File

@@ -1312,6 +1312,24 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
end)
end

test "search doesn't show statuses that it shouldn't", %{conn: conn} do
{:ok, activity} =
CommonAPI.post(insert(:user), %{
"status" => "This is about 2hu, but private",
"visibility" => "private"
})

capture_log(fn ->
conn =
conn
|> get("/api/v1/search", %{"q" => activity.data["object"]["id"]})

assert results = json_response(conn, 200)

[] = results["statuses"]
end)
end

test "search fetches remote accounts", %{conn: conn} do
conn =
conn


Loading…
Cancel
Save