Skip to content

Instantly share code, notes, and snippets.

@prdn
Last active April 28, 2020 07:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save prdn/2dfb8e67bc3cba16d8316833307a8012 to your computer and use it in GitHub Desktop.
Save prdn/2dfb8e67bc3cba16d8316833307a8012 to your computer and use it in GitHub Desktop.
/*
INSTALL DEPENDENCIES:
$ npm install request
CONFIGURE:
set `apiKey` and `apiSecret` variables
RUN:
node bfx-pulse-rest-v2-write.js
*/
const fs = require('fs')
const crypto = require('crypto')
const request = require('request')
const apiKey = '...'
const apiSecret = '...'
const url = 'v2/auth/w/pulse/add'
const nonce = (Date.now() * 1000).toString()
const body = {
title: 'My first amazing Pulse',
content: 'Bitfinex Pulse is a content and #news distribution network.',
//isPublic: 1, // make Pulse public
//isPin: 1, // make Pulse pinned
attachments: ['data:image/png;base64,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']
}
const rawBody = JSON.stringify(body)
let signature = `/api/${url}${nonce}${rawBody}`
signature = crypto
.createHmac('sha384', apiSecret)
.update(signature)
.digest('hex')
const options = {
url: `https://api.bitfinex.com/${url}`,
headers: {
'bfx-nonce': nonce,
'bfx-apikey': apiKey,
'bfx-signature': signature
},
json: body
}
request.post(options, (err, response, data) => {
if (err) {
return console.error(err)
}
if (body.isPublic) {
console.log(`open browser at www.bitfinex.com/pulse/post/${data[0]}`)
} else {
console.log(`open browser at www.bitfinex.com/pulse and go to 'Your Pulse' section`)
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment