Current section
Files
Jump to
Current section
Files
lib/codex/oauth/token_store/file.ex
defmodule Codex.OAuth.TokenStore.File do
@moduledoc false
alias Codex.Auth.Store
alias Codex.OAuth.TokenStore
@spec load(Codex.OAuth.Context.t()) :: {:ok, Codex.OAuth.Session.t() | nil} | {:error, term()}
def load(context) do
case Store.load(codex_home: context.codex_home, codex_home_explicit?: true) do
{:ok, nil} ->
{:ok, nil}
{:ok, %Store.Record{} = record} ->
{:ok,
TokenStore.session_from_record(record, context,
provider: :openai_chatgpt,
flow: :stored,
storage: :file,
persisted?: true
)}
{:error, _} = error ->
error
end
end
@spec persist(Codex.Auth.Store.Record.t(), Codex.OAuth.Context.t(), keyword()) ::
{:ok, Codex.OAuth.Session.t()} | {:error, term()}
def persist(%Store.Record{} = record, context, opts \\ []) do
with :ok <- Store.write(record, codex_home: context.codex_home) do
{:ok,
TokenStore.session_from_record(record, context,
provider: Keyword.get(opts, :provider, :openai_chatgpt),
flow: Keyword.get(opts, :flow, :unknown),
storage: :file,
persisted?: true
)}
end
end
@spec delete(Codex.OAuth.Context.t()) :: :ok | {:error, term()}
def delete(context) do
Store.delete(codex_home: context.codex_home)
end
end