Merge pull request #1033 from chaotixkilla/feat-add-ciphertrace-cashin-flow
Ciphertrace cash-in flow
This commit is contained in:
commit
97123fb5c3
21 changed files with 258 additions and 40 deletions
47
lib/plugins/wallet-scoring/ciphertrace/ciphertrace.js
Normal file
47
lib/plugins/wallet-scoring/ciphertrace/ciphertrace.js
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
const axios = require('axios')
|
||||
const _ = require('lodash/fp')
|
||||
|
||||
const NAME = 'CipherTrace'
|
||||
const SUPPORTED_COINS = ['BTC', 'ETH', 'BCH', 'LTC', 'BNB', 'RSK']
|
||||
|
||||
function getClient(account) {
|
||||
if (_.isNil(account) || !account.enabled) return null
|
||||
|
||||
const [ctv1, username, secretKey] = account.authorizationValue.split(':')
|
||||
if (_.isNil(ctv1) || _.isNil(username) || _.isNil(secretKey)) {
|
||||
throw new Error('Invalid CipherTrace configuration')
|
||||
}
|
||||
|
||||
const apiVersion = ctv1.slice(-2)
|
||||
const authHeader = {
|
||||
"Authorization": account.authorizationValue
|
||||
}
|
||||
return { apiVersion, authHeader }
|
||||
}
|
||||
|
||||
function rateWallet(account, cryptoCode, address) {
|
||||
const client = getClient(account)
|
||||
if (!_.includes(_.toUpper(cryptoCode), SUPPORTED_COINS) || _.isNil(client)) return Promise.resolve(null)
|
||||
|
||||
const { apiVersion, authHeader } = client
|
||||
const threshold = account.scoreThreshold
|
||||
|
||||
return axios.get(`https://rest.ciphertrace.com/aml/${apiVersion}/${_.toLower(cryptoCode)}/risk?address=${address}`, {
|
||||
headers: authHeader
|
||||
})
|
||||
.then(res => ({ address, score: res.data.risk, isValid: res.data.risk < threshold }))
|
||||
}
|
||||
|
||||
function isValidWalletScore(account, score) {
|
||||
const client = getClient(account)
|
||||
if (_.isNil(client)) return Promise.resolve(true)
|
||||
|
||||
const threshold = account.scoreThreshold
|
||||
return Promise.resolve(score < threshold)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
NAME,
|
||||
rateWallet,
|
||||
isValidWalletScore
|
||||
}
|
||||
|
|
@ -1,15 +1,27 @@
|
|||
const NAME = 'FakeScoring'
|
||||
|
||||
function rateWallet (account, address) {
|
||||
const { WALLET_SCORE_THRESHOLD } = require('../../../constants')
|
||||
|
||||
function rateWallet (account, cryptoCode, address) {
|
||||
return new Promise((resolve, _) => {
|
||||
setTimeout(() => {
|
||||
console.log('[WALLET-SCORING] DEBUG: Mock scoring rating wallet address %s', address)
|
||||
return resolve({ address, rating: 5 })
|
||||
return Promise.resolve(7)
|
||||
.then(score => resolve({ address, score, isValid: score < WALLET_SCORE_THRESHOLD }))
|
||||
}, 100)
|
||||
})
|
||||
}
|
||||
|
||||
function isValidWalletScore (account, score) {
|
||||
return new Promise((resolve, _) => {
|
||||
setTimeout(() => {
|
||||
return resolve(score < WALLET_SCORE_THRESHOLD)
|
||||
}, 100)
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
NAME,
|
||||
rateWallet
|
||||
rateWallet,
|
||||
isValidWalletScore
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue