Current section

Files

Jump to
ex_bitmex lib ex_bitmex rest user margin.ex
Raw

lib/ex_bitmex/rest/user/margin.ex

defmodule ExBitmex.Rest.User.Margin do
alias ExBitmex.Rest
@type credentials :: ExBitmex.Credentials.t() | nil
@type params :: map
@type position :: ExBitmex.Margin.t()
@type rate_limit :: ExBitmex.RateLimit.t()
@path "/user/margin"
def get(%ExBitmex.Credentials{} = credentials, params \\ %{}) do
@path
|> Rest.HTTPClient.auth_get(credentials, params)
|> parse_response
end
defp parse_response({:ok, data, rate_limit}) when is_list(data) do
margins =
data
|> Enum.map(&to_struct/1)
|> Enum.map(fn {:ok, p} -> p end)
{:ok, margins, rate_limit}
end
defp parse_response({:ok, data, rate_limit}) when is_map(data) do
{:ok, margin} = data |> to_struct
{:ok, margin, rate_limit}
end
defp parse_response({:error, _, _} = error), do: error
defp to_struct(data) do
data
|> Mapail.map_to_struct(
ExBitmex.Margin,
transformations: [:snake_case]
)
end
end