/// <summary> /// Private IR Call: GetAccounts /// </summary> /// <returns></returns> private async Task <List <Balance> > Balances() { //get the epoch timestamp to be used as the nonce //BTC Markets moans about timestamps for some damned reason so we need to get the time from ConvertUnixTime var timestamp = APIHelpers.GetCurrentUnixTimestamp().ToString(); // create the string that needs to be signed var stringToSign = BuildStringToSign(ACCOUNT_BALANCE_PATH, null, timestamp); // build signature to be included in the http header //TODO: API Secret? var signature = ComputeHash(ApiSecret, stringToSign); lock (RESTClient.Headers) { RESTClient.Headers.Clear(); RESTClient.Headers.Add("Accept", HeaderConstants.CONTENT); RESTClient.Headers.Add("Accept-Charset", HeaderConstants.ENCODING); RESTClient.Headers.Add(HeaderConstants.APIKEY_HEADER, ApiKey); RESTClient.Headers.Add(HeaderConstants.SIGNATURE_HEADER, signature); RESTClient.Headers.Add(HeaderConstants.TIMESTAMP_HEADER, timestamp); } List <Balance> result; try { result = await RESTClient.GetAsync <List <Balance> >(ACCOUNT_BALANCE_PATH); } catch (DeserializationException dex) { var errorResult = JsonConvert.DeserializeObject <ErrorResult>(dex.Markup); throw new BTCMarketsException(errorResult); } return(result); }