Packages
stellar_sdk
0.4.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/collection.ex
defmodule Stellar.Horizon.Collection do
@moduledoc """
Paginates data and returns collection-based results for multiple Horizon endpoints.
"""
alias Stellar.Horizon.CollectionError
@type resource :: module()
@type records :: [resource(), ...]
@type response :: map()
@type link :: String.t()
@type t :: %__MODULE__{records: records(), self: link(), prev: link(), next: link()}
defstruct [:records, :self, :next, :prev]
@spec new(response :: {resource(), response()}) :: t()
def new(
{resource,
%{
_embedded: %{records: records},
_links: %{self: %{href: self}, prev: %{href: prev}, next: %{href: next}}
}}
) do
%__MODULE__{records: Enum.map(records, &resource.new/1), self: self, prev: prev, next: next}
end
def new(_response), do: raise(CollectionError, :invalid_collection)
end