Packages
open_api_spex
3.4.0
3.22.3
3.22.2
3.22.1
3.22.0
3.21.5
3.21.4
3.21.3
3.21.2
3.21.1
3.21.0
3.20.1
3.20.0
3.19.1
3.19.0
3.18.3
3.18.2
3.18.1
3.18.0
3.17.3
3.17.2
3.17.1
3.17.0
3.16.4
3.16.3
3.16.2
3.16.1
3.16.0
3.15.0
3.14.0
3.13.0
3.12.0
3.11.0
3.10.0
3.9.0
3.8.0
3.7.0
3.6.0
3.5.2
3.5.1
3.5.0
3.4.0
3.3.0
3.2.1
3.2.0
3.1.0
3.0.0
2.3.1
2.3.0
2.2.0
2.1.1
2.1.0
2.0.0
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
Leverage Open Api Specification 3 (swagger) to document, test, validate and explore your Plug and Phoenix APIs.
Current section
Files
Jump to
Current section
Files
lib/open_api_spex/plug/cache.ex
defmodule OpenApiSpex.Plug.Cache do
@moduledoc false
@callback get(module) :: {OpenApiSpex.OpenApi.t(), map} | nil
@callback put(module, {OpenApiSpex.OpenApi.t(), map}) :: :ok
@spec adapter() :: OpenApiSpex.Plug.AppEnvCache | OpenApiSpex.Plug.PersistentTermCache
def adapter do
if function_exported?(:persistent_term, :info, 0) do
OpenApiSpex.Plug.PersistentTermCache
else
OpenApiSpex.Plug.AppEnvCache
end
end
end
defmodule OpenApiSpex.Plug.AppEnvCache do
@moduledoc false
@behaviour OpenApiSpex.Plug.Cache
@impl OpenApiSpex.Plug.Cache
def get(spec_module) do
Application.get_env(:open_api_spex, spec_module)
end
@impl OpenApiSpex.Plug.Cache
def put(spec_module, spec) do
:ok = Application.put_env(:open_api_spex, spec_module, spec)
end
end
if function_exported?(:persistent_term, :info, 0) do
defmodule OpenApiSpex.Plug.PersistentTermCache do
@moduledoc false
@behaviour OpenApiSpex.Plug.Cache
@impl OpenApiSpex.Plug.Cache
def get(spec_module) do
:persistent_term.get(spec_module)
rescue
ArgumentError ->
nil
end
@impl OpenApiSpex.Plug.Cache
def put(spec_module, spec) do
:ok = :persistent_term.put(spec_module, spec)
end
end
end