diff options
author | Maksim Pechnikov <parallel588@gmail.com> | 2020-06-12 14:49:54 +0300 |
---|---|---|
committer | Maksim Pechnikov <parallel588@gmail.com> | 2020-06-12 14:49:54 +0300 |
commit | f9dcf15ecb684b4b802d731a216448c76913d462 (patch) | |
tree | 6947ad2cae0b79cd1ff2e123f35b93aa3e2758d3 /lib/pleroma/web/admin_api/controllers | |
parent | 5474b5c988d3ab8869217b72d3702fb9396adadf (diff) | |
download | pleroma-f9dcf15ecb684b4b802d731a216448c76913d462.tar.gz |
added admin api for MediaProxy cache invalidation
Diffstat (limited to 'lib/pleroma/web/admin_api/controllers')
-rw-r--r-- | lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex b/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex new file mode 100644 index 000000000..7b28f7c72 --- /dev/null +++ b/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex @@ -0,0 +1,38 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.MediaProxyCacheController do + use Pleroma.Web, :controller + + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.Web.ApiSpec.Admin, as: Spec + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + + plug( + OAuthScopesPlug, + %{scopes: ["read:media_proxy_caches"], admin: true} when action in [:index] + ) + + plug( + OAuthScopesPlug, + %{scopes: ["write:media_proxy_caches"], admin: true} when action in [:purge, :delete] + ) + + action_fallback(Pleroma.Web.AdminAPI.FallbackController) + + defdelegate open_api_operation(action), to: Spec.MediaProxyCacheOperation + + def index(%{assigns: %{user: _}} = conn, _) do + render(conn, "index.json", urls: []) + end + + def delete(%{assigns: %{user: _}, body_params: %{urls: urls}} = conn, _) do + render(conn, "index.json", urls: urls) + end + + def purge(%{assigns: %{user: _}, body_params: %{urls: urls, ban: _ban}} = conn, _) do + render(conn, "index.json", urls: urls) + end +end |