Current section
Files
Jump to
Current section
Files
lib/reydenx/utils.ex
defmodule Reydenx.Utils do
alias Reydenx.Model.MinMaxStep
@doc since: "0.1.0"
@spec http_client() :: HTTPoison
def http_client do
Application.get_env(:reydenx, :http_client)
end
@doc false
def map({k, v}) do
case k do
"views" ->
if is_map(v) do
{String.to_atom(k),
struct(MinMaxStep, Enum.map(v, fn {k1, v1} -> {String.to_atom(k1), v1} end))}
else
{String.to_atom(k), v}
end
"online_viewers" ->
{String.to_atom(k),
struct(MinMaxStep, Enum.map(v, fn {k1, v1} -> {String.to_atom(k1), v1} end))}
"created_at" ->
{String.to_atom(k), str_to_datetime(v)}
"updated_at" ->
{String.to_atom(k), str_to_datetime(v)}
"payed_at" ->
{String.to_atom(k), str_to_datetime(v)}
"expires_in" ->
{String.to_atom(k), str_to_datetime(v)}
_ ->
{String.to_atom(k), v}
end
end
@doc false
@spec str_to_datetime(datetime :: String.t()) :: %DateTime{}
defp str_to_datetime(datetime) do
DateTime.from_iso8601(datetime) |> get_datetme()
end
defp get_datetme({:ok, datetime, _}), do: datetime
defp get_datetme({:error, _}), do: ""
end