Packages

Elixir client library for the Alpaca Trading API. Supports trading, market data, and account management.

Current section

Files

Jump to
alpa_ex lib alpa models crypto_transfer.ex
Raw

lib/alpa/models/crypto_transfer.ex

defmodule Alpa.Models.CryptoTransfer do
@moduledoc """
Crypto funding transfer model.
"""
use TypedStruct
typedstruct do
field :id, String.t()
field :tx_hash, String.t()
field :direction, String.t()
field :status, String.t()
field :amount, Decimal.t()
field :symbol, String.t()
field :network_fee, Decimal.t()
field :fees, Decimal.t()
field :chain, String.t()
field :from_address, String.t()
field :to_address, String.t()
field :created_at, DateTime.t()
field :updated_at, DateTime.t()
end
@spec from_map(map()) :: t()
def from_map(data) when is_map(data) do
%__MODULE__{
id: data["id"],
tx_hash: data["tx_hash"],
direction: data["direction"],
status: data["status"],
amount: parse_decimal(data["amount"]),
symbol: data["symbol"],
network_fee: parse_decimal(data["network_fee"]),
fees: parse_decimal(data["fees"]),
chain: data["chain"],
from_address: data["from_address"],
to_address: data["to_address"],
created_at: parse_datetime(data["created_at"]),
updated_at: parse_datetime(data["updated_at"])
}
end
defp parse_decimal(nil), do: nil
defp parse_decimal(value) when is_binary(value), do: Decimal.new(value)
defp parse_decimal(value) when is_integer(value), do: Decimal.new(value)
defp parse_decimal(value) when is_float(value), do: Decimal.from_float(value)
defp parse_datetime(nil), do: nil
defp parse_datetime(value) when is_binary(value) do
case DateTime.from_iso8601(value) do
{:ok, dt, _offset} -> dt
_ -> nil
end
end
end