feat: Vonage API

This commit is contained in:
Rafael Taranto 2023-08-17 12:33:15 +01:00
parent 84ceeda611
commit 3b19caf3a7
8 changed files with 1116 additions and 71 deletions

View file

@ -49,6 +49,7 @@ const ALL_ACCOUNTS = [
{ code: 'mock-id-verify', display: 'Mock ID verifier', class: ID_VERIFIER, dev: true },
{ code: 'twilio', display: 'Twilio', class: SMS },
{ code: 'telnyx', display: 'Telnyx', class: SMS },
{ code: 'vonage', display: 'Vonage', class: SMS },
{ code: 'mailgun', display: 'Mailgun', class: EMAIL },
{ code: 'none', display: 'None', class: ZERO_CONF, cryptos: ALL_CRYPTOS },
{ code: 'blockcypher', display: 'Blockcypher', class: ZERO_CONF, cryptos: [BTC] },

View file

@ -24,7 +24,8 @@ const SECRET_FIELDS = [
'cex.privateKey',
'binance.privateKey',
'twilio.authToken',
'telnyx.apiKey'
'telnyx.apiKey',
'vonage.apiSecret'
]
/*

View file

@ -0,0 +1,31 @@
const { Auth } = require('@vonage/auth')
const { SMS } = require('@vonage/sms')
const NAME = 'Vonage'
function sendMessage (account, rec) {
const credentials = new Auth({
apiKey: account.apiKey,
apiSecret: account.apiSecret
})
const from = account.fromNumber
const text = rec.sms.body
const to = rec.sms.toNumber || account.toNumber
const smsClient = new SMS(credentials)
smsClient.send({ from, text, to })
.catch(err => {
throw new Error(`Vonage error: ${err.message}`)
})
}
function getLookup () {
throw new Error('Vonage error: lookup not supported')
}
module.exports = {
NAME,
sendMessage,
getLookup
}

View file

@ -11,6 +11,7 @@ import kraken from './kraken'
import mailgun from './mailgun'
import telnyx from './telnyx'
import twilio from './twilio'
import vonage from './vonage'
export default {
[bitgo.code]: bitgo,
@ -21,6 +22,7 @@ export default {
[kraken.code]: kraken,
[mailgun.code]: mailgun,
[telnyx.code]: telnyx,
[vonage.code]: vonage,
[twilio.code]: twilio,
[binanceus.code]: binanceus,
[cex.code]: cex,

View file

@ -0,0 +1,52 @@
import * as Yup from 'yup'
import SecretInputFormik from 'src/components/inputs/formik/SecretInput'
import TextInputFormik from 'src/components/inputs/formik/TextInput'
import { secretTest } from './helper'
export default {
code: 'vonage',
name: 'Vonage',
title: 'Vonage (SMS)',
elements: [
{
code: 'apiKey',
display: 'API Key',
component: TextInputFormik
},
{
code: 'apiSecret',
display: 'API Secret',
component: SecretInputFormik
},
{
code: 'fromNumber',
display: 'Vonage Number (international format)',
component: TextInputFormik,
face: true
},
{
code: 'toNumber',
display: 'Notifications Number (international format)',
component: TextInputFormik,
face: true
}
],
getValidationSchema: account => {
return Yup.object().shape({
apiKey: Yup.string('The API key must be a string')
.max(200, 'The API key is too long')
.required('The Vonage number is required'),
apiSecret: Yup.string('The API key must be a string')
.max(200, 'The API secret is too long')
.test(secretTest(account?.apiKey, 'API secret')),
fromNumber: Yup.string('The Vonage number must be a string')
.max(100, 'The Vonage number is too long')
.required('The Vonage number is required'),
toNumber: Yup.string('The notifications number must be a string')
.max(100, 'The notifications number is too long')
.required('The notifications number is required')
})
}
}

1086
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -11,6 +11,8 @@
"@graphql-tools/merge": "^6.2.5",
"@lamassu/coins": "1.3.0",
"@simplewebauthn/server": "^3.0.0",
"@vonage/auth": "^1.5.0",
"@vonage/sms": "^1.7.0",
"apollo-server-express": "2.25.1",
"argon2": "0.28.2",
"axios": "0.21.1",

View file

@ -1,16 +1,16 @@
with import (fetchTarball {
name = "nixpkgs-19.03";
url = https://github.com/NixOS/nixpkgs/archive/0b8799ecaaf0dc6b4c11583a3c96ca5b40fcfdfb.tar.gz;
sha256 = "11m4aig6cv0zi3gbq2xn9by29cfvnsxgzf9qsvz67qr0yq29ryyz";
name = "8ad5e8";
url = https://github.com/NixOS/nixpkgs/archive/8ad5e8132c5dcf977e308e7bf5517cc6cc0bf7d8.tar.gz;
sha256 = "17v6wigks04x1d63a2wcd7cc4z9ca6qr0f4xvw1pdw83f8a3c0nj";
}) {};
stdenv.mkDerivation {
name = "node";
buildInputs = [
nodejs-14_x
python2Full
python3
openssl
postgresql_9_6
postgresql
];
shellHook = ''
export PATH="$PWD/node_modules/.bin/:$PATH"