Current section
Files
Jump to
Current section
Files
lib/ex_icao_vds/error.ex
defmodule ExIcaoVds.Error do
@moduledoc "Structured error type returned by all public API functions."
@type code ::
:invalid_input
| :missing_required_field
| :unsupported_profile
| :unsupported_version
| :invalid_header
| :invalid_message_zone
| :invalid_signature_zone
| :signature_failed
| :invalid_signature
| :unknown_key
| :untrusted_key
| :unknown_certificate
| :untrusted_certificate
| :expired_certificate
| :revoked_certificate
| :encryption_failed
| :decryption_failed
| :carrier_generation_failed
| :carrier_decode_failed
| :payload_too_large
| :kms_unavailable
| :hsm_unavailable
| :configuration_error
@type t :: %__MODULE__{
code: code(),
message: String.t(),
details: map(),
cause: term(),
safe_to_show?: boolean()
}
defstruct [:code, :message, details: %{}, cause: nil, safe_to_show?: true]
@doc "Build a new Error. `opts` accepts `:details`, `:cause`, `:safe_to_show?`."
@spec new(code(), String.t(), keyword()) :: t()
def new(code, message, opts \\ []) do
%__MODULE__{
code: code,
message: message,
details: Keyword.get(opts, :details, %{}),
cause: Keyword.get(opts, :cause),
safe_to_show?: Keyword.get(opts, :safe_to_show?, true)
}
end
end