defmodule RequestCache do @moduledoc """ #{File.read!("./README.md")} """ @type opts :: [ ttl: pos_integer, cache: module, cached_errors: :all | list(atom) ] @spec store(conn :: Plug.Conn.t, opts_or_ttl :: opts | pos_integer) :: Plug.Conn.t def store(conn, opts_or_ttl \\ []) def store(%Plug.Conn{} = conn, opts_or_ttl) do if RequestCache.Config.enabled?() do RequestCache.Plug.store_request(conn, opts_or_ttl) else conn end end if RequestCache.Application.dependency_found?(:absinthe) and RequestCache.Application.dependency_found?(:absinthe_plug) do def store(result, opts_or_ttl) do if RequestCache.Config.enabled?() do RequestCache.Middleware.store_result(result, opts_or_ttl) else result end end def connect_absinthe_context_to_conn(conn, %Absinthe.Blueprint{} = blueprint) do Absinthe.Plug.put_options(conn, context: blueprint.execution.context) end end end