Current section

Files

Jump to
ex_bitmex lib ex_bitmex rest trade index.ex
Raw

lib/ex_bitmex/rest/trade/index.ex

defmodule ExBitmex.Rest.Trade.Index do
alias ExBitmex.Rest
@type credentials :: ExBitmex.Credentials.t()
@type params :: map
@type trade :: ExBitmex.Trade.t()
@type rate_limit :: ExBitmex.RateLimit.t()
@type auth_error_response :: Rest.Request.auth_error_response()
@path "/trade"
@spec get(params) :: {:ok, [trade], rate_limit} | auth_error_response
def get(params \\ %{}) do
@path
|> Rest.HTTPClient.non_auth_get(params)
|> parse_response
end
defp parse_response({:ok, data, rate_limit}) when is_list(data) do
trades =
data
|> Enum.map(&to_struct/1)
|> Enum.map(fn {:ok, p} -> p end)
{:ok, trades, rate_limit}
end
defp parse_response({:error, _, _} = error), do: error
defp to_struct(data) do
data
|> Mapail.map_to_struct(
ExBitmex.Trade,
transformations: [:snake_case]
)
end
end