Current section
Files
Jump to
Current section
Files
lib/codex/oauth/session.ex
defmodule Codex.OAuth.Session do
@moduledoc """
Internal OAuth session structs shared across flows and token stores.
"""
defmodule PendingLogin do
@moduledoc """
Pending browser-based OAuth login state returned by `Codex.OAuth.begin_login/1`.
"""
@enforce_keys [
:provider,
:flow,
:storage,
:context,
:authorize_url,
:state,
:pkce,
:redirect_uri,
:loopback_server
]
defstruct [
:provider,
:flow,
:storage,
:context,
:authorize_url,
:state,
:pkce,
:redirect_uri,
:loopback_server,
:warnings
]
@type t :: %__MODULE__{
provider: atom(),
flow: atom(),
storage: :file | :memory | :auto,
context: struct(),
authorize_url: String.t(),
state: String.t(),
pkce: struct(),
redirect_uri: String.t(),
loopback_server: struct() | nil,
warnings: [String.t()] | nil
}
end
defmodule PendingDeviceLogin do
@moduledoc """
Pending device-code OAuth login state returned by `Codex.OAuth.begin_login/1`.
"""
@enforce_keys [
:provider,
:flow,
:storage,
:context,
:verification_url,
:user_code,
:device_code,
:interval_ms
]
defstruct [
:provider,
:flow,
:storage,
:context,
:verification_url,
:user_code,
:device_code,
:interval_ms,
:expires_at,
:warnings
]
@type t :: %__MODULE__{
provider: atom(),
flow: atom(),
storage: :file | :memory | :auto,
context: struct(),
verification_url: String.t(),
user_code: String.t(),
device_code: String.t(),
interval_ms: pos_integer(),
expires_at: DateTime.t() | nil,
warnings: [String.t()] | nil
}
end
@enforce_keys [:provider, :flow, :storage, :context, :auth_record]
defstruct [
:provider,
:flow,
:storage,
:context,
:auth_record,
:persisted?,
:token_store
]
@type t :: %__MODULE__{
provider: atom(),
flow: atom(),
storage: :file | :memory | :auto,
context: struct(),
auth_record: struct(),
persisted?: boolean(),
token_store: pid() | nil
}
end