Packages
charon
3.1.0
4.3.0
4.3.0-beta1
4.2.0
4.2.0-beta3
4.2.0-beta2
4.2.0-beta1
4.1.0
4.0.1
4.0.0
4.0.0-beta3
4.0.0-beta2
4.0.0-beta1
3.4.1
3.4.0
3.3.0
3.2.0
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
3.0.0-beta1
2.8.0
2.8.0-beta1
2.7.3
2.7.2
2.7.1
2.7.0
2.6.1
2.6.0
2.5.0
2.4.0
2.3.0
2.2.0
2.2.0-beta
2.1.3
2.1.2
2.1.2-beta
2.1.1
2.1.0
2.0.0
1.3.4
1.3.3
1.3.2-beta
1.3.1-beta
1.3.0-beta
1.2.0-beta
1.1.0-beta
1.0.1-beta
1.0.0-beta1
0.0.4-alpha
0.0.3-alpha
0.0.2-alpha
0.0.1-alpha
Authentication & sessions for API's.
Current section
Files
Jump to
Current section
Files
lib/charon/internal.ex
defmodule Charon.Internal do
@moduledoc false
# module consists of shared functions internal to the package
# it CAN be relied on by child packages, so be careful when changing things
use __MODULE__.Constants
require Logger
@url_enc_opts padding: false
@doc """
Get a `now` unix timestamp
"""
@spec now :: integer
def now(), do: System.os_time(:second)
@doc """
Get the requests' `now` unix timestamp from conn or default to `now/0` result.
"""
@spec now(Plug.Conn.t()) :: integer
def now(_conn = %{private: %{@now => now}}), do: now
def now(_conn), do: now()
@doc """
Get a value from the conn/resolution's private map
"""
def get_private(_res = %{private: priv}, key), do: Map.get(priv, key)
@doc """
Merge a map into the conn/resolution's private map
"""
def put_private(conn_or_res = %{private: priv}, map),
do: %{conn_or_res | private: Map.merge(priv, map)}
@doc """
Put a key/value into the conn/resolution's private map
"""
def put_private(conn_or_res = %{private: priv}, key, value),
do: %{conn_or_res | private: Map.put(priv, key, value)}
@doc """
Determine if the token transport mechanism is `:cookie_only`, `:bearer` or `:cookie`.
"""
def parse_token_transport(token_transport)
def parse_token_transport(t) when t in ~w(bearer cookie_only cookie)a, do: t
def parse_token_transport("bearer"), do: :bearer
def parse_token_transport("cookie_only"), do: :cookie_only
def parse_token_transport("cookie"), do: :cookie
def url_encode(data), do: Base.url_encode64(data, @url_enc_opts)
def url_decode(data), do: Base.url_decode64(data, @url_enc_opts)
def url_decode!(data), do: Base.url_decode64!(data, @url_enc_opts)
end