Merge branch 'features/hashtag-column' into 'develop'
[akkoma] / lib / pleroma / web / plugs / cache.ex
index f65c2a1893daf81df4ac265638d121ad1badde45..18880716a0966487b3783eef4abeb9588651022b 100644 (file)
@@ -2,19 +2,19 @@
 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
-defmodule Pleroma.Plugs.Cache do
+defmodule Pleroma.Web.Plugs.Cache do
   @moduledoc """
   Caches successful GET responses.
 
   To enable the cache add the plug to a router pipeline or controller:
 
-      plug(Pleroma.Plugs.Cache)
+      plug(Pleroma.Web.Plugs.Cache)
 
   ## Configuration
 
   To configure the plug you need to pass settings as the second argument to the `plug/2` macro:
 
-      plug(Pleroma.Plugs.Cache, [ttl: nil, query_params: true])
+      plug(Pleroma.Web.Plugs.Cache, [ttl: nil, query_params: true])
 
   Available options:
 
@@ -41,6 +41,8 @@ defmodule Pleroma.Plugs.Cache do
 
   @defaults %{ttl: nil, query_params: true}
 
+  @cachex Pleroma.Config.get([:cachex, :provider], Cachex)
+
   @impl true
   def init([]), do: @defaults
 
@@ -53,7 +55,7 @@ defmodule Pleroma.Plugs.Cache do
   def call(%{method: "GET"} = conn, opts) do
     key = cache_key(conn, opts)
 
-    case Cachex.get(:web_resp_cache, key) do
+    case @cachex.get(:web_resp_cache, key) do
       {:ok, nil} ->
         cache_resp(conn, opts)
 
@@ -97,11 +99,11 @@ defmodule Pleroma.Plugs.Cache do
 
         conn =
           unless opts[:tracking_fun] do
-            Cachex.put(:web_resp_cache, key, {content_type, body}, ttl: ttl)
+            @cachex.put(:web_resp_cache, key, {content_type, body}, ttl: ttl)
             conn
           else
             tracking_fun_data = Map.get(conn.assigns, :tracking_fun_data, nil)
-            Cachex.put(:web_resp_cache, key, {content_type, body, tracking_fun_data}, ttl: ttl)
+            @cachex.put(:web_resp_cache, key, {content_type, body, tracking_fun_data}, ttl: ttl)
 
             opts.tracking_fun.(conn, tracking_fun_data)
           end