Skip to content

Instantly share code, notes, and snippets.

@ilumin
Created February 21, 2023 15:35
Show Gist options
  • Save ilumin/d3c3829f44ad1b5c244084037a276401 to your computer and use it in GitHub Desktop.
Save ilumin/d3c3829f44ad1b5c244084037a276401 to your computer and use it in GitHub Desktop.
Pre-request script to prepare header for LNMarket
const requestTimestamp = new Date().getTime()
const requestPath = `/${pm.request.url.path.join('/')}`
const requestMethod = pm.request.method
let requestParams = ''
if (requestMethod.match(/^(GET|DELETE)$/)) {
requestParams = new URLSearchParams(pm.request.url.query.all()).toString()
} else {
requestParams = pm.request.body.raw
? JSON.stringify(JSON.parse(pm.request.body.raw))
: ''
}
// prepare signature
// const signature = createHmac('sha256', secret).update(`${timestamp}${method}${path}${params}`).digest('base64')
const message = requestTimestamp + requestMethod + requestPath + requestParams
const secret = pm.collectionVariables.get('LNM-ACCESS-SECRET')
const hash = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secret)
.update(message)
.finalize()
const signature = CryptoJS.enc.Base64.stringify(hash)
// set dynamic variable
pm.collectionVariables.set("LNM-ACCESS-TIMESTAMP", requestTimestamp)
pm.collectionVariables.set("LNM-ACCESS-SIGNATURE", signature)
// set default header
pm.request.headers.add('LNM-ACCESS-KEY: {{LNM-ACCESS-KEY}}')
pm.request.headers.add('LNM-ACCESS-PASSPHRASE: {{LNM-ACCESS-PASSPHRASE}}')
pm.request.headers.add('LNM-ACCESS-SIGNATURE: {{LNM-ACCESS-SIGNATURE}}')
pm.request.headers.add('LNM-ACCESS-TIMESTAMP: {{LNM-ACCESS-TIMESTAMP}}')
// set content type
pm.request.headers.add('Content-Type: application/json')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment