Current section
Files
Jump to
Current section
Files
lib/alpa/models/clock.ex
defmodule Alpa.Models.Clock do
@moduledoc """
Market clock information.
"""
use TypedStruct
typedstruct do
field :timestamp, DateTime.t()
field :is_open, boolean()
field :next_open, DateTime.t()
field :next_close, DateTime.t()
end
@doc """
Parse clock data from API response.
"""
@spec from_map(map()) :: t()
def from_map(data) when is_map(data) do
%__MODULE__{
timestamp: parse_datetime(data["timestamp"]),
is_open: data["is_open"],
next_open: parse_datetime(data["next_open"]),
next_close: parse_datetime(data["next_close"])
}
end
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