defmodule Oidcc.Plug.Cache do @moduledoc """ Behaviour to cache introspection / userinfo requests ## Usage * Userinfo: See `t:Oidcc.Plug.LoadUserinfo.opts/0` / `cache` * Introspection: See `t:Oidcc.Plug.IntrospectToken.opts/0` / `cache` """ @moduledoc since: "0.1.0" @type t() :: module() @doc """ Check cache if userinfo / introspection is stored for `token`. """ @doc since: "0.1.0" @callback get(type :: :userinfo, token :: String.t(), conn :: Plug.Conn.t()) :: {:ok, :oidcc_jwt_util.claims()} | :miss @callback get(type :: :introspection, token :: String.t(), conn :: Plug.Conn.t()) :: {:ok, Oidcc.TokenIntrospection.t()} | :miss @doc """ Store userinfo / introspection for `token`. """ @doc since: "0.1.0" @callback put( type :: :userinfo, token :: String.t(), data :: :oidcc_jwt_util.claims(), conn :: Plug.Conn.t() ) :: :ok @callback put( type :: :introspection, token :: String.t(), data :: Oidcc.TokenIntrospection.t(), conn :: Plug.Conn.t() ) :: :ok end