Current section
Files
Jump to
Current section
Files
lib/bittrex_api.ex
defmodule BittrexAPI do
use HTTPoison.Base
alias BittrexAPI.Client
@type response :: nil | {integer, any} | Poison.Parser.t
@spec process_response(HTTPoison.Response.t) :: response
def process_response(_resp = {:ok, %HTTPoison.Response{status_code: 200, body: body}}), do: {:ok, Poison.decode!(body)}
def process_response(_resp = {:ok, resp}), do: {:ok, resp}
def process_response(resp), do: resp
@spec get(binary, Client.t) :: %{}
def get(url, _client = %Client{url: base_url}) do
base_url <> url
|> get
|> process_response
end
def getp(url, client = %Client{api_key: api_key, url: base_url}) do
timestamp = DateTime.utc_now
|> DateTime.to_unix
call_url = base_url
<> url
<> "&apikey=#{api_key}&nonce="
<> Integer.to_string timestamp
hmac = call_url
|> hash_url(client)
call_url
|> HTTPoison.get(["apisign": hmac])
|> process_response
end
defp hash_url(url, _client = %Client{api_secret: api_secret}) do
:crypto.hmac(:sha512, api_secret, url)
|> Base.encode16
end
end