defmodule Auth0.Config do alias Auth0.Config @moduledoc """ Documentation for Auth0 Configuration. ## properties - :domain - Auth0 domain - :api_token - API token - :client_id - Client ID. This value is ignored when API token is provided. - :client_secret - Client Secret. This value is ignored when API token is3 provided. - :max_request_retry_count - Max retry count of request when rate limit is exceeded. - :correlation_id - Correlation ID - :token_cache_disabled - disable token cache - :clear_token_cache - clear token cache ## available environment - AUTH0_DOMAIN - This value is used when `%Config{domain: nil}`. - AUTH0_API_TOKEN - This value is used when `%Config{api_token: nil}`. - AUTH0_CLIENT_ID - This value is used when `%Config{client_id: nil}`. - AUTH0_CLIENT_SECRET - This value is used when `%Config{client_secret: nil}`. - AUTH0_MAX_REQUEST_RETRY_COUNT - This value is used when `%Config{max_request_retry_count: nil}`. """ defstruct domain: nil, api_token: nil, client_id: nil, client_secret: nil, max_request_retry_count: nil, correlation_id: nil, token_cache_disabled: false, clear_token_cache: false @type t :: %__MODULE__{ domain: String.t(), api_token: String.t(), client_id: String.t(), client_secret: String.t(), max_request_retry_count: integer, correlation_id: String.t(), token_cache_disabled: boolean, clear_token_cache: boolean } @type config :: Config.t() @max_request_default_retry_count 3 @doc """ get Auth0 domain. """ @spec get_domain(config) :: String.t() | nil def get_domain(%Config{domain: nil}), do: System.get_env("AUTH0_DOMAIN") def get_domain(%Config{domain: domain}), do: domain @doc """ get API token. """ @spec get_api_token(config) :: String.t() | nil def get_api_token(%Config{api_token: nil}), do: System.get_env("AUTH0_API_TOKEN") def get_api_token(%Config{api_token: api_token}), do: api_token @doc """ get Client ID.. """ @spec get_client_id(config) :: String.t() | nil def get_client_id(%Config{client_id: nil}), do: System.get_env("AUTH0_CLIENT_ID") def get_client_id(%Config{client_id: client_id}), do: client_id @doc """ get Client Secret. """ @spec get_client_secret(config) :: String.t() | nil def get_client_secret(%Config{client_secret: nil}), do: System.get_env("AUTH0_CLIENT_SECRET") def get_client_secret(%Config{client_secret: client_secret}), do: client_secret @doc """ get max retry count of request. """ @spec get_max_request_retry_count(config) :: integer def get_max_request_retry_count(%Config{max_request_retry_count: nil}), do: System.get_env( "AUTH0_MAX_REQUEST_RETRY_COUNT", @max_request_default_retry_count |> to_string ) |> String.to_integer() def get_max_request_retry_count(%Config{max_request_retry_count: max_request_retry_count}), do: max_request_retry_count end