Packages
stellar_sdk
0.1.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.ex
defmodule StellarSDK.Horizon do
@moduledoc false
@behaviour StellarSDK.Horizon.Client
@impl true
def request(method, path, headers \\ [], body \\ "", opts \\ []) do
base_url = config()[:url]
options = http_options(opts)
http_client().request(method, base_url <> path, headers, body, options)
end
@spec config() :: Keyword.t()
def config do
network = Application.get_env(:stellar_sdk, :network, :test)
[
network: network,
url: network_url(network),
passphrase: network_passphrase(network)
]
end
@spec http_client() :: atom()
defp http_client, do: Application.get_env(:stellar_sdk, :http_client, :hackney)
@spec http_options(options :: Keyword.t()) :: Keyword.t()
defp http_options(options) do
default_options = [recv_timeout: 30_000, follow_redirect: true]
override_options = Application.get_env(:stellar_sdk, :hackney_options, [])
default_options
|> Keyword.merge(override_options)
|> Keyword.merge(options)
|> (&[:with_body | &1]).()
end
@spec network_url(network :: atom) :: String.t()
defp network_url(:public), do: "https://horizon.stellar.org"
defp network_url(_network), do: "https://horizon-testnet.stellar.org"
@spec network_passphrase(network :: atom) :: String.t()
defp network_passphrase(:public), do: "Public Global Stellar Network ; September 2015"
defp network_passphrase(_network), do: "Test SDF Network ; September 2015"
end