X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Fmastodon_api%2Fcontrollers%2Fsearch_controller.ex;h=bd12069c154131af4ad0a75487c371327760520e;hb=dc9f66749c85352e0d7761ae2b9b8663a3aa3e3a;hp=af93e453df9579422a960f14755cad407238d801;hpb=b221d77a6da07c684bdbc63ddf4500e0d7ffeae8;p=akkoma diff --git a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex index af93e453d..bd12069c1 100644 --- a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex @@ -1,15 +1,14 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2021 Pleroma Authors +# Copyright © 2017-2022 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.SearchController do use Pleroma.Web, :controller - alias Pleroma.Activity alias Pleroma.Repo alias Pleroma.User - alias Pleroma.Web alias Pleroma.Web.ControllerHelper + alias Pleroma.Web.Endpoint alias Pleroma.Web.MastodonAPI.AccountView alias Pleroma.Web.MastodonAPI.StatusView alias Pleroma.Web.Plugs.OAuthScopesPlug @@ -17,6 +16,8 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do require Logger + @search_limit 40 + plug(Pleroma.Web.ApiSpec.CastAndValidate) # Note: Mastodon doesn't allow unauthenticated access (requires read:accounts / read:search) @@ -24,7 +25,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do # Note: on private instances auth is required (EnsurePublicOrAuthenticatedPlug is not skipped) - plug(RateLimiter, [name: :search] when action in [:search, :search2, :account_search]) + plug(RateLimiter, [name: :search] when action in [:search2, :account_search]) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.SearchOperation @@ -41,7 +42,6 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do end def search2(conn, params), do: do_search(:v2, conn, params) - def search(conn, params), do: do_search(:v1, conn, params) defp do_search(version, %{assigns: %{user: user}} = conn, %{q: query} = params) do query = String.trim(query) @@ -77,7 +77,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do [ resolve: params[:resolve], following: params[:following], - limit: params[:limit], + limit: min(params[:limit], @search_limit), offset: params[:offset], type: params[:type], author: get_author(params), @@ -98,7 +98,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do end defp resource_search(_, "statuses", query, options) do - statuses = with_fallback(fn -> Activity.search(options[:for_user], query, options) end) + statuses = with_fallback(fn -> Pleroma.Search.search(query, options) end) StatusView.render("index.json", activities: statuses, @@ -108,7 +108,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do end defp resource_search(:v2, "hashtags", query, options) do - tags_path = Web.base_url() <> "/tag/" + tags_path = Endpoint.url() <> "/tag/" query |> prepare_tags(options) @@ -117,10 +117,6 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do end) end - defp resource_search(:v1, "hashtags", query, options) do - prepare_tags(query, options) - end - defp prepare_tags(query, options) do tags = query