refactor: yagni and flow of external compliance
This commit is contained in:
parent
b06927fd1c
commit
04eea85a0d
29 changed files with 389 additions and 1417 deletions
|
|
@ -2,40 +2,33 @@ const axios = require('axios')
|
|||
const crypto = require('crypto')
|
||||
const _ = require('lodash/fp')
|
||||
const FormData = require('form-data')
|
||||
const settingsLoader = require('../../../new-settings-loader')
|
||||
|
||||
const ph = require('../../../plugin-helper')
|
||||
|
||||
const axiosConfig = {
|
||||
baseURL: 'https://api.sumsub.com'
|
||||
}
|
||||
|
||||
const axiosInstance = axios.create(axiosConfig)
|
||||
const getSigBuilder = (apiToken, secretKey) => config => {
|
||||
const timestamp = Math.floor(Date.now() / 1000)
|
||||
const signature = crypto.createHmac('sha256', secretKey)
|
||||
|
||||
const buildSignature = config => {
|
||||
return settingsLoader.loadLatest()
|
||||
.then(({ accounts }) => ph.getAccountInstance(accounts.sumsub, 'sumsub'))
|
||||
.then(({ secretKey, apiToken }) => {
|
||||
const timestamp = Math.floor(Date.now() / 1000)
|
||||
const signature = crypto.createHmac('sha256', secretKey)
|
||||
|
||||
signature.update(`${timestamp}${_.toUpper(config.method)}${config.url}`)
|
||||
if (config.data instanceof FormData) {
|
||||
signature.update(config.data.getBuffer())
|
||||
} else if (config.data) {
|
||||
signature.update(config.data)
|
||||
}
|
||||
signature.update(`${timestamp}${_.toUpper(config.method)}${config.url}`)
|
||||
if (config.data instanceof FormData) {
|
||||
signature.update(config.data.getBuffer())
|
||||
} else if (config.data) {
|
||||
signature.update(JSON.stringify(config.data))
|
||||
}
|
||||
|
||||
config.headers['X-App-Token'] = apiToken
|
||||
config.headers['X-App-Access-Sig'] = signature.digest('hex')
|
||||
config.headers['X-App-Access-Ts'] = timestamp
|
||||
config.headers['X-App-Token'] = apiToken
|
||||
config.headers['X-App-Access-Sig'] = signature.digest('hex')
|
||||
config.headers['X-App-Access-Ts'] = timestamp
|
||||
|
||||
return config
|
||||
})
|
||||
return config
|
||||
}
|
||||
|
||||
axiosInstance.interceptors.request.use(buildSignature, Promise.reject)
|
||||
|
||||
const request = config => axiosInstance(config)
|
||||
const request = ((account, config) => {
|
||||
const instance = axios.create(axiosConfig)
|
||||
instance.interceptors.request.use(getSigBuilder(account.apiToken, account.secretKey), Promise.reject)
|
||||
return instance(config)
|
||||
})
|
||||
|
||||
module.exports = request
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue