Packages

ory_client

1.22.63
1.22.63 1.22.62 1.22.61 1.22.60 1.22.59 1.22.58 1.22.57 1.22.56 1.22.55 1.22.54 1.22.53 1.22.52 1.22.51 1.22.50 1.22.49 1.22.48 1.22.47 1.22.46 1.22.45 1.22.44 1.22.43 1.22.42 1.22.41 1.22.40 1.22.39 1.22.38 1.22.37 1.22.36 1.22.35 1.22.34 1.22.33 1.22.32 1.22.28 1.22.27 1.22.26 1.22.25 1.22.24 1.22.23 1.22.22 1.22.21 1.22.16 1.22.15 1.22.14 1.22.13 1.22.12 1.22.11 1.22.10 1.22.9 1.22.8 1.22.7 1.22.6 1.22.5 1.22.4 1.22.3 1.22.2 1.22.1 1.22.0 1.21.6 1.21.5 1.21.4 1.21.3 1.21.2 1.21.1 1.21.0 1.20.23 1.20.22 1.20.11 1.20.10 1.20.9 1.20.8 1.20.7 1.20.6 1.20.5 1.20.4 1.20.3 1.20.2 1.20.1 1.20.0 1.19.0 1.18.5 1.18.4 1.17.2 1.17.1 1.16.10 1.6.2 1.6.1 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.0 1.2.17 1.2.16 1.2.15 1.2.14 1.2.11 1.2.10 1.2.9 1.2.8 1.2.7 1.2.6 1.2.5 1.2.4 1.2.3 1.2.2 1.2.1 1.2.0 1.1.51 1.1.50 1.1.49 1.1.48 1.1.47 1.1.46 1.1.45 1.1.44 1.1.41 1.1.40 1.1.39 1.1.39-alpha.0 1.1.38 1.1.37 1.1.36 1.1.35 1.1.34 1.1.33 1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.26 1.1.25 1.1.24 1.1.23 1.1.22 1.1.21 1.1.20 1.1.19 1.1.18 1.1.17 1.1.7 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.2 1.0.1 1.0.0 1.0.0-alpha.0 0.2.0-alpha.60 0.2.0-alpha.48 0.2.0-alpha.47 0.2.0-alpha.46 0.2.0-alpha.45 0.2.0-alpha.44 0.2.0-alpha.43 0.2.0-alpha.42 0.2.0-alpha.41 0.2.0-alpha.40 0.2.0-alpha.39 0.2.0-alpha.38 0.2.0-alpha.37 0.2.0-alpha.36 0.2.0-alpha.35 0.2.0-alpha.34 0.2.0-alpha.33 0.2.0-alpha.32 0.2.0-alpha.31 0.2.0-alpha.30 0.2.0-alpha.29 0.2.0-alpha.28 0.2.0-alpha.27 0.2.0-alpha.26 0.2.0-alpha.25 0.2.0-alpha.24 0.2.0-alpha.23 0.2.0-alpha.22 0.2.0-alpha.21 0.2.0-alpha.20 0.2.0-alpha.19 0.2.0-alpha.18 0.2.0-alpha.16 0.2.0-alpha.15 0.2.0-alpha.14 0.2.0-alpha.4 0.2.0-alpha.2 0.1.0-alpha.12 0.1.0-alpha.11 0.1.0-alpha.10 0.1.0-alpha.9 0.1.0-alpha.8 0.1.0-alpha.7 0.1.0-alpha.6 0.1.0-alpha.5 0.1.0-alpha.4 0.1.0-alpha.3 0.1.0-alpha.2 0.1.0-alpha.1 0.0.1-alpha.189 0.0.1-alpha.188 0.0.1-alpha.187

OpenAPI API client for Ory Network, Ory's web-scale API for identity and access control.

Current section

Files

Jump to
ory_client lib ory connection.ex
Raw

lib/ory/connection.ex

# NOTE: This file is auto generated by OpenAPI Generator 7.12.0 (https://openapi-generator.tech).
# Do not edit this file manually.
defmodule Ory.Connection do
@moduledoc """
Handle Tesla connections for Ory.
Additional middleware can be set in the compile-time or runtime configuration:
config :tesla, Ory.Connection,
base_url: "https://playground.projects.oryapis.com",
adapter: Tesla.Adapter.Hackney
The default base URL can also be set as:
config :ory_client,
:base_url, "https://playground.projects.oryapis.com"
"""
@default_base_url Application.compile_env(
:ory_client,
:base_url,
"https://playground.projects.oryapis.com"
)
@default_scopes [
# A scope required when requesting refresh tokens (alias for `offline_access`)
"offline",
# A scope required when requesting refresh tokens
"offline_access",
# Request an OpenID Connect ID Token
"openid"
]
@typedoc """
An arity-1 function or module/function tuple specification which, given
a list of scopes, obtains an OAuth2 token.
"""
@type token_fetcher :: (scopes :: list(String.t()) -> String.t()) | {module(), atom()}
@typedoc """
The list of options that can be passed to new/1.
- `base_url`: Overrides the base URL on a per-client basis.
- `user_agent`: Overrides the User-Agent header.
- `token`: An OAuth2 token or a token fetcher function.
- `token_scopes`: A list of OAuth2 scope strings for use with a token
fetcher function.
- `username`: A username for basic authentication.
- `password`: A password for basic authentication.
"""
@type options :: [
{:base_url, String.t()},
{:user_agent, String.t()},
{:token, String.t() | token_fetcher},
{:token_scopes, list(String.t())},
{:username, String.t() | nil},
{:password, String.t() | nil},
]
@doc "Forward requests to Tesla."
@spec request(Tesla.Client.t(), [Tesla.option()]) :: Tesla.Env.result()
defdelegate request(client, options), to: Tesla
@doc """
Configure a client with no authentication.
### Returns
Tesla.Env.client
"""
@spec new() :: Tesla.Env.client()
def new do
Tesla.client(middleware(), adapter())
end
@doc """
Configure a client that may have authentication.
### Parameters
The first parameter *may* be a `token` (a string, a token fetcher class,
or a module/function tuple) or a keyword list of `options`. They are
documented separately, but only *one* of them will be passed.
- `token`: a String or a function of arity one. This value, or the result
of the function call, will be set as a bearer token in the
`authorization` header.
- `options`: a keyword list of OpenAPIPetstore.Connection.options.
### Returns
Tesla.Env.client
"""
@spec new(String.t() | token_fetcher | options) :: Tesla.Env.client()
def new(token) when is_binary(token) or is_function(token, 1) or is_tuple(token) do
new(token: token)
end
def new(options) when is_list(options) do
options
|> middleware()
|> Tesla.client(adapter())
end
@doc """
Configure a client using bearer authentication with scopes, or with
username and password for basic authentication.
### Parameters
- `token_or_username`: a String representing a bearer token or a username,
depending on the type of the next parameter, or a function arity one
that returns a bearer token.
- `scopes_or_password`: a list of Strings represenging OAuth2 scopes, or
a single string that is the password for the username provided.
- `options`: a keyword list of OpenAPIPetstore.Connection.options.
### Returns
Tesla.Env.client
"""
@spec new(
token_or_username :: String.t() | token_fetcher,
scopes_or_password :: list(String.t()) | String.t(),
options
) :: Tesla.Env.client()
def new(token_or_username, scopes_or_password, options \\ [])
def new(token, scopes, options)
when (is_binary(token) or is_function(token, 1) or is_tuple(token)) and is_list(scopes) do
options
|> Keyword.merge(token: token, token_scopes: scopes)
|> new()
end
def new(username, password, options) when is_binary(username) and is_binary(password) do
options
|> Keyword.merge(username: username, password: password)
|> new()
end
@doc """
Returns fully configured middleware for passing to Tesla.client/2.
"""
@spec middleware(options) :: [Tesla.Client.middleware()]
def middleware(options \\ []) do
base_url =
Keyword.get(
options,
:base_url,
Application.get_env(:ory_client, :base_url, @default_base_url)
)
tesla_options = Application.get_env(:tesla, __MODULE__, [])
middleware = Keyword.get(tesla_options, :middleware, [])
json_engine = Keyword.get(tesla_options, :json, Jason)
user_agent =
Keyword.get(
options,
:user_agent,
Keyword.get(
tesla_options,
:user_agent,
"ory-client-elixir/v1.22.63"
)
)
username = Keyword.get(options, :username)
password = Keyword.get(options, :password)
middleware =
if username || password do
[{Tesla.Middleware.BasicAuth, %{username: username, password: password}} | middleware]
else
middleware
end
middleware =
if token = Keyword.get(options, :token) do
scopes = Keyword.get(options, :token_scopes, @default_scopes)
[authorization(token, scopes) | middleware]
else
middleware
end
[
{Tesla.Middleware.BaseUrl, base_url},
{Tesla.Middleware.Headers, [{"user-agent", user_agent}]},
{Tesla.Middleware.EncodeJson, engine: json_engine}
| middleware
]
end
@doc """
Returns an authentication middleware tuple for a Tesla client that sets
the `authorization` header to the value of the provided bearer token. If
the token is provided as a function of arity one, it will be called with
a list of requested scopes that will obtain an OAuth2 token.
### Parameters
- `token`: a String or a function of arity one. This value, or the result
of the function call, will be set as a bearer token in the
`authorization` header.
- `scopes`: an optional list of scopes for use with the token fetcher
function. Ignored when `token` is provided as a String. Defaults to
`#{inspect(@default_scopes)}`.
### Returns
`{Tesla.Middleware.Headers, [{"authorization", TOKEN}]}`
"""
@spec authorization(String.t() | token_fetcher, list(String.t())) ::
Tesla.Client.middleware()
def authorization(token, scopes \\ @default_scopes)
def authorization(token, _scopes) when is_binary(token) do
{Tesla.Middleware.Headers, [{"authorization", token}]}
end
def authorization({module, function}, scopes) when is_atom(module) and is_atom(function) do
apply(module, function, [scopes])
end
def authorization(token_fetcher, scopes) when is_function(token_fetcher, 1) do
authorization(token_fetcher.(scopes))
end
@doc """
Returns the default adapter for this API.
"""
def adapter do
:tesla
|> Application.get_env(__MODULE__, [])
|> Keyword.get(:adapter, nil)
end
end