Packages
stellar_sdk
0.19.0
0.23.0
0.22.0
0.21.2
0.21.1
0.21.0
0.20.0
0.19.0
0.18.1
0.18.0
0.17.1
0.17.0
0.16.1
0.16.0
0.15.1
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Elixir SDK for the Stellar network.
Current section
Files
Jump to
Current section
Files
lib/horizon/error.ex
defmodule Stellar.Horizon.Error do
@moduledoc """
Represents an error which occurred during a Horizon API call.
"""
@type type :: String.t() | nil
@type title :: String.t() | nil
@type status_code :: 200 | 400 | 404 | 406 | 422 | 500 | :network_error
@type detail :: String.t() | nil
@type base64_xdr :: String.t()
@type result_code :: String.t()
@type result_codes :: %{
optional(:transaction) => result_code(),
optional(:operations) => list(result_code())
}
@type extras :: %{
optional(:envelope_xdr) => base64_xdr(),
optional(:result_codes) => result_codes(),
optional(:result_xdr) => base64_xdr()
}
@type error_source :: :horizon | :network
@type error_body :: map() | atom() | String.t()
@type error :: {error_source(), error_body()}
@type t :: %__MODULE__{
type: type(),
title: title(),
status_code: status_code(),
detail: detail(),
extras: extras()
}
defstruct [:type, :title, :status_code, :detail, extras: %{}]
@spec new(error :: error()) :: t()
def new({:horizon, %{type: type, title: title, status: status_code, detail: detail} = error}) do
%__MODULE__{
type: type,
title: title,
status_code: status_code,
detail: detail,
extras: error[:extras]
}
end
def new({:network, error}) do
%__MODULE__{
title: "Network error",
status_code: :network_error,
detail: "An error occurred while making the network request: #{inspect(error)}"
}
end
end