Do you plan to create API fo Bitfinex?
krasnopv opened this issue · comments
krasnopv commented
emmtte commented
No, I have no account on bitfinex.
krasnopv commented
Ok. I try to do it myself.
I will push on Success ;)
emmtte commented
found this may help you
https://gist.github.com/tanaikech/1104d039341f198f95eee66af57c0abf
krasnopv commented
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.