Packages
stellar_sdk
0.9.2
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/tx_build/claim_predicates.ex
defmodule Stellar.TxBuild.ClaimPredicates do
@moduledoc """
`ClaimPredicates` struct definition.
"""
alias Stellar.TxBuild.ClaimPredicate
alias StellarBase.XDR.ClaimPredicates
@behaviour Stellar.TxBuild.XDR
@type predicates :: list(ClaimPredicate.t())
@type error :: {:error, atom()}
@type validation :: {:ok, any()} | error()
@type t :: %__MODULE__{value: predicates()}
defstruct [:value]
@impl true
def new(predicates \\ [], opts \\ [])
def new(predicates, _opts) do
case validate_predicate_list([], predicates) do
{:ok, value} -> value
{:error, value} -> {:error, value}
end
end
@impl true
def to_xdr(%__MODULE__{value: predicates}) do
predicates
|> Enum.map(&ClaimPredicate.to_xdr/1)
|> ClaimPredicates.new()
end
@spec validate_predicate_list(predicates :: predicates(), predicates :: predicates()) ::
validation()
def validate_predicate_list(response, []), do: {:ok, %__MODULE__{value: response}}
def validate_predicate_list(response, [%ClaimPredicate{} = h | t]),
do: validate_predicate_list(response ++ [h], t)
def validate_predicate_list(_response, _predicates),
do: {:error, :invalid_predicate_list_value}
end