aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-12-19 20:45:44 +0700
committerEgor Kislitsyn <egor@kislitsyn.com>2019-12-19 20:45:44 +0700
commit34d85f8a5473fe0f85e8a8e9e8f58e40b3964ba4 (patch)
tree46eb1651e24997e2e2f4ef6efc891a77e26ea8a8 /lib
parent6c39fa20b191f985a2be704089c20acbcfe0035a (diff)
downloadpleroma-34d85f8a5473fe0f85e8a8e9e8f58e40b3964ba4.tar.gz
Return 404 if account to filter notifications from is not found
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/mastodon_api/controllers/notification_controller.ex17
-rw-r--r--lib/pleroma/web/mastodon_api/mastodon_api.ex11
2 files changed, 21 insertions, 7 deletions
diff --git a/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex b/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex
index 16759be6a..f2508aca4 100644
--- a/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex
+++ b/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex
@@ -23,6 +23,23 @@ defmodule Pleroma.Web.MastodonAPI.NotificationController do
plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug)
# GET /api/v1/notifications
+ def index(conn, %{"account_id" => account_id} = params) do
+ case Pleroma.User.get_cached_by_id(account_id) do
+ %{ap_id: account_ap_id} ->
+ params =
+ params
+ |> Map.delete("account_id")
+ |> Map.put("account_ap_id", account_ap_id)
+
+ index(conn, params)
+
+ _ ->
+ conn
+ |> put_status(:not_found)
+ |> json(%{"error" => "Account is not found"})
+ end
+ end
+
def index(%{assigns: %{user: user}} = conn, params) do
notifications = MastodonAPI.get_notifications(user, params)
diff --git a/lib/pleroma/web/mastodon_api/mastodon_api.ex b/lib/pleroma/web/mastodon_api/mastodon_api.ex
index 6c13d4df6..390a2b190 100644
--- a/lib/pleroma/web/mastodon_api/mastodon_api.ex
+++ b/lib/pleroma/web/mastodon_api/mastodon_api.ex
@@ -56,7 +56,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do
user
|> Notification.for_user_query(options)
|> restrict(:exclude_types, options)
- |> restrict(:account_id, options)
+ |> restrict(:account_ap_id, options)
|> Pagination.fetch_paginated(params)
end
@@ -73,7 +73,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do
reblogs: :boolean,
with_muted: :boolean,
with_move: :boolean,
- account_id: :string
+ account_ap_id: :string
}
changeset = cast({%{}, param_types}, params, Map.keys(param_types))
@@ -90,11 +90,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do
|> where([q, a], not fragment("? @> ARRAY[?->>'type']::varchar[]", ^ap_types, a.data))
end
- defp restrict(query, :account_id, %{account_id: account_id}) do
- case User.get_cached_by_id(account_id) do
- %{ap_id: ap_id} -> where(query, [n, a], a.actor == ^ap_id)
- _ -> where(query, [n, a], a.actor == "fake ap id")
- end
+ defp restrict(query, :account_ap_id, %{account_ap_id: account_ap_id}) do
+ where(query, [n, a], a.actor == ^account_ap_id)
end
defp restrict(query, _, _), do: query