Current section
Files
Jump to
Current section
Files
lib/account.ex
defmodule AcmeEx.Account do
alias AcmeEx.Jws
def client_key(request), do: request.protected |> Map.fetch!("jwk")
def thumbprint(request), do: request |> client_key() |> Jws.thumbprint()
def new(client_key), do: create() |> insert(client_key)
def upsert(client_key) do
case fetch(client_key) do
{:ok, account} -> account
{:error, _reason} -> new(client_key)
end
end
def fetch(client_key), do: AcmeEx.Db.fetch({:account, client_key})
defp create() do
%{id: :erlang.unique_integer([:positive, :monotonic]), status: :valid, contact: []}
end
defp insert(account, client_key) do
AcmeEx.Db.create({:account, client_key}, account)
account
end
end