emmtte / list

Google Sheets automatic creation with Google Apps Script (GAS) for managing a cryptocurrency tracking spreadsheet with multi exchanges

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Do you plan to create API fo Bitfinex?

krasnopv opened this issue · comments

No, I have no account on bitfinex.

Ok. I try to do it myself.
I will push on Success ;)

function Bitfinex () {
    function bytesToHex(data) {
        return data.map(function(e) {
            var v = (e < 0 ? e + 256 : e).toString(16);
            return v.length == 1 ? "0" + v : v;
        }).join("");
    }
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Config");
    const apiKey = sheet.getRange("B26").getValue();
    const apiSecret = sheet.getRange("B27").getValue();
    const apiPath = "v2/auth/r/wallets";
    const nonce = Date.now().toString();
    const body = { "type": "price" };
    const rawBody = JSON.stringify(body);
    var signature = "/api/" + apiPath + nonce + rawBody;
    signature = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_384, signature, apiSecret);
    signature = bytesToHex(signature);
    const url = "https://api.bitfinex.com/" + apiPath;
    const options = {
      method: 'POST',
      contentType: "application/json",
      headers: {
        'bfx-nonce': nonce,
        'bfx-apikey': apiKey,
        'bfx-signature': signature
      },
      payload: rawBody
    };
    var response = UrlFetchApp.fetch(url, options);
    var data = JSON.parse(response.getContentText());  
  var array = [];
  for(var x in data){ balance=parseFloat(data[x][2]);
    if (balance > 0) {
      asset=data[x][1]
      if (asset=="IOT") {asset="MIOTA"}
      if (asset=="QSH") {asset="QASH"}
      array.push({'currency': asset, 'balance': balance, 'market': "Bitfinex"})}
    } 
  }
  return array;
}

This works for me.
I used for 'signature = bytesToHex(signature);' except jsSHA.
I didn't check all Bitfinex's symbols, but I could check them in future.
API settings in Config: B26 and B27 cells.

Really good job and fastest
Thanks @krasnopv
Updated with main.js and readme