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 calendar.ex
Raw

lib/alpa/models/calendar.ex

defmodule Alpa.Models.Calendar do
@moduledoc """
Market calendar entry.
"""
use TypedStruct
typedstruct do
field(:date, Date.t())
field(:open, String.t())
field(:close, String.t())
field(:session_open, String.t())
field(:session_close, String.t())
field(:settlement_date, Date.t())
end
@spec from_map(map()) :: t()
def from_map(data) when is_map(data) do
%__MODULE__{
date: parse_date(data["date"]),
open: data["open"],
close: data["close"],
session_open: data["session_open"],
session_close: data["session_close"],
settlement_date: parse_date(data["settlement_date"])
}
end
defp parse_date(nil), do: nil
defp parse_date(value) when is_binary(value) do
case Date.from_iso8601(value) do
{:ok, date} -> date
_ -> nil
end
end
end