From c33a4315fb09e67d0ed5f644877054a3fb7b1fe1 Mon Sep 17 00:00:00 2001
From: Maksim Pechnikov <parallel588@gmail.com>
Date: Mon, 18 May 2020 06:48:19 +0300
Subject: [PATCH] updated docs

---
 config/config.exs                             |  5 +----
 docs/configuration/cheatsheet.md              | 20 +++++++++++++++++++
 lib/pleroma/web/media_proxy/invalidation.ex   |  5 +++--
 .../web/media_proxy/invalidations/http.ex     |  6 +++---
 4 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/config/config.exs b/config/config.exs
index 882d25069..25cf2a9b9 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -380,10 +380,7 @@
   enabled: false,
   invalidation: [
     enabled: false,
-    provider: Pleroma.Web.MediaProxy.Invalidation.Script,
-    options: %{
-      script_path: "./installation/nginx-cache-purge.example"
-    }
+    provider: Pleroma.Web.MediaProxy.Invalidation.Script
   ],
   proxy_opts: [
     redirect_on_failure: false,
diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md
index 1078c4e87..aaea3f46c 100644
--- a/docs/configuration/cheatsheet.md
+++ b/docs/configuration/cheatsheet.md
@@ -249,6 +249,26 @@ This section describe PWA manifest instance-specific values. Currently this opti
 * `base_url`: The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts.
 * `proxy_opts`: All options defined in `Pleroma.ReverseProxy` documentation, defaults to `[max_body_length: (25*1_048_576)]`.
 * `whitelist`: List of domains to bypass the mediaproxy
+* `invalidation`: options for remove media from cache after delete object:
+    * `enabled`: Enables purge cache
+    * `provider`: Which one of  the [purge cache strategy](#purge-cache-strategy) to use.
+
+### Purge cache strategy
+
+#### Pleroma.Web.MediaProxy.Invalidation.Script
+
+This strategy allow perform external bash script to purge cache.
+Urls of attachments pass to script as arguments.
+
+* `script_path`: path to external script.
+
+#### Pleroma.Web.MediaProxy.Invalidation.Http
+
+This strategy allow perform custom http request to purge cache.
+
+* `method`: http method. default is `purge`
+* `headers`: http headers. default is empty
+* `options`: request options. default is empty
 
 ## Link previews
 
diff --git a/lib/pleroma/web/media_proxy/invalidation.ex b/lib/pleroma/web/media_proxy/invalidation.ex
index dd9a53a27..371aa8ae0 100644
--- a/lib/pleroma/web/media_proxy/invalidation.ex
+++ b/lib/pleroma/web/media_proxy/invalidation.ex
@@ -10,8 +10,9 @@ def purge(urls) do
   end
 
   defp do_purge(true, urls) do
-    config = Config.get([:media_proxy, :invalidation])
-    config[:provider].purge(urls, config[:options])
+    provider = Config.get([:media_proxy, :invalidation, :provider])
+    options = Config.get(provider)
+    provider.purge(urls, options)
     :ok
   end
 
diff --git a/lib/pleroma/web/media_proxy/invalidations/http.ex b/lib/pleroma/web/media_proxy/invalidations/http.ex
index 40c624efc..66fafa7ba 100644
--- a/lib/pleroma/web/media_proxy/invalidations/http.ex
+++ b/lib/pleroma/web/media_proxy/invalidations/http.ex
@@ -3,9 +3,9 @@ defmodule Pleroma.Web.MediaProxy.Invalidation.Http do
 
   @impl Pleroma.Web.MediaProxy.Invalidation
   def purge(urls, opts) do
-    method = Map.get(opts, :http_method, :purge)
-    headers = Map.get(opts, :http_headers, [])
-    options = Map.get(opts, :http_options, [])
+    method = Map.get(opts, :method, :purge)
+    headers = Map.get(opts, :headers, [])
+    options = Map.get(opts, :options, [])
 
     Enum.each(urls, fn url ->
       Pleroma.HTTP.request(method, url, "", headers, options)