Poodle.Error (poodle v1.0.0)

View Source

Error struct for the Poodle SDK.

Provides structured error information with context and debugging details.

Summary

Functions

Create a new DNS error.

Create a new forbidden error.

Create an error from HTTP response.

Create a new network error.

Create a new payment required error.

Create a new SSL error.

Create a new timeout error.

Create a new unauthorized error.

Create a new unprocessable entity error.

Create a new validation error.

Types

error_type()

@type error_type() ::
  :validation_error
  | :unauthorized
  | :forbidden
  | :payment_required
  | :unprocessable_entity
  | :rate_limit_exceeded
  | :server_error
  | :network_error
  | :timeout
  | :dns_error
  | :ssl_error

t()

@type t() :: %Poodle.Error{
  details: map() | nil,
  message: String.t(),
  retry_after: integer() | nil,
  status_code: integer() | nil,
  type: error_type()
}

Functions

dns_error(message, details \\ %{})

@spec dns_error(String.t(), map()) :: t()

Create a new DNS error.

Examples

iex> Poodle.Error.dns_error("DNS resolution failed", %{host: "api.example.com"})
%Poodle.Error{type: :dns_error, message: "DNS resolution failed", details: %{host: "api.example.com"}}

forbidden(message, details \\ %{})

@spec forbidden(String.t(), map()) :: t()

Create a new forbidden error.

Examples

iex> Poodle.Error.forbidden("Account suspended")
%Poodle.Error{type: :forbidden, message: "Account suspended"}

from_response(status_code, response_body)

@spec from_response(integer(), map()) :: t()

Create an error from HTTP response.

Examples

iex> Poodle.Error.from_response(401, %{"message" => "Invalid API key"})
%Poodle.Error{type: :unauthorized, message: "Invalid API key", status_code: 401}

network_error(message, details \\ %{})

@spec network_error(String.t(), map()) :: t()

Create a new network error.

Examples

iex> Poodle.Error.network_error("Connection failed")
%Poodle.Error{type: :network_error, message: "Connection failed"}

payment_required(message, details \\ %{})

@spec payment_required(String.t(), map()) :: t()

Create a new payment required error.

Examples

iex> Poodle.Error.payment_required("Subscription expired")
%Poodle.Error{type: :payment_required, message: "Subscription expired"}

rate_limit_exceeded(message, retry_after \\ nil, details \\ %{})

@spec rate_limit_exceeded(String.t(), integer() | nil, map()) :: t()

Create a new rate limit exceeded error.

Examples

iex> Poodle.Error.rate_limit_exceeded("Rate limit exceeded", 30)
%Poodle.Error{type: :rate_limit_exceeded, message: "Rate limit exceeded", retry_after: 30}

server_error(message, status_code, details \\ %{})

@spec server_error(String.t(), integer(), map()) :: t()

Create a new server error.

Examples

iex> Poodle.Error.server_error("Internal server error", 500)
%Poodle.Error{type: :server_error, message: "Internal server error", status_code: 500}

ssl_error(message, details \\ %{})

@spec ssl_error(String.t(), map()) :: t()

Create a new SSL error.

Examples

iex> Poodle.Error.ssl_error("SSL certificate verification failed")
%Poodle.Error{type: :ssl_error, message: "SSL certificate verification failed"}

timeout(message, details \\ %{})

@spec timeout(String.t(), map()) :: t()

Create a new timeout error.

Examples

iex> Poodle.Error.timeout("Request timeout", %{timeout: 30000})
%Poodle.Error{type: :timeout, message: "Request timeout", details: %{timeout: 30000}}

unauthorized(message, details \\ %{})

@spec unauthorized(String.t(), map()) :: t()

Create a new unauthorized error.

Examples

iex> Poodle.Error.unauthorized("Invalid API key")
%Poodle.Error{type: :unauthorized, message: "Invalid API key"}

unprocessable_entity(message, details \\ %{})

@spec unprocessable_entity(String.t(), map()) :: t()

Create a new unprocessable entity error.

Examples

iex> Poodle.Error.unprocessable_entity("Invalid data format")
%Poodle.Error{type: :unprocessable_entity, message: "Invalid data format", status_code: 422}

validation_error(message, details \\ %{})

@spec validation_error(String.t(), map()) :: t()

Create a new validation error.

Examples

iex> Poodle.Error.validation_error("Invalid email address", %{field: "from"})
%Poodle.Error{type: :validation_error, message: "Invalid email address", details: %{field: "from"}}