Replace mailjet with mailgun (#180)

This commit is contained in:
Rafael Taranto 2018-10-04 15:40:50 -03:00 committed by Josh Harvey
parent 6a2e3bc348
commit 3b14a715b4
7 changed files with 245 additions and 36 deletions

View file

@ -192,7 +192,7 @@ function fetchData () {
{code: 'mock-sms', display: 'Mock SMS', class: 'sms'}, {code: 'mock-sms', display: 'Mock SMS', class: 'sms'},
{code: 'mock-id-verify', display: 'Mock ID verifier', class: 'idVerifier'}, {code: 'mock-id-verify', display: 'Mock ID verifier', class: 'idVerifier'},
{code: 'twilio', display: 'Twilio', class: 'sms'}, {code: 'twilio', display: 'Twilio', class: 'sms'},
{code: 'mailjet', display: 'Mailjet', class: 'email'}, {code: 'mailgun', display: 'Mailgun', class: 'email'},
{code: 'all-zero-conf', display: 'Always 0-conf', class: 'zeroConf', cryptos: ['BTC', 'ZEC', 'LTC', 'DASH', 'BCH']}, {code: 'all-zero-conf', display: 'Always 0-conf', class: 'zeroConf', cryptos: ['BTC', 'ZEC', 'LTC', 'DASH', 'BCH']},
{code: 'no-zero-conf', display: 'Always 1-conf', class: 'zeroConf', cryptos: ALL_CRYPTOS}, {code: 'no-zero-conf', display: 'Always 1-conf', class: 'zeroConf', cryptos: ALL_CRYPTOS},
{code: 'blockcypher', display: 'Blockcypher', class: 'zeroConf', cryptos: ['BTC']}, {code: 'blockcypher', display: 'Blockcypher', class: 'zeroConf', cryptos: ['BTC']},

View file

@ -0,0 +1,21 @@
const Mailgun = require('mailgun-js')
const NAME = 'Mailgun'
function sendMessage ({apiKey, domain, fromEmail, toEmail}, rec) {
const mailgun = Mailgun({apiKey, domain})
const emailData = {
from: `Lamassu Server ${fromEmail}`,
to: toEmail,
subject: rec.email.subject,
text: rec.email.body
}
return mailgun.messages().send(emailData)
}
module.exports = {
NAME,
sendMessage
}

View file

@ -1,23 +0,0 @@
const Mailjet = require('node-mailjet')
const NAME = 'Mailjet'
function sendMessage (account, rec) {
const mailjet = Mailjet.connect(account.apiKey, account.apiSecret)
const sendEmail = mailjet.post('send')
const emailData = {
FromEmail: account.fromEmail,
FromName: 'Lamassu Server',
Subject: rec.email.subject,
'Text-part': rec.email.body,
Recipients: [{'Email': account.toEmail}]
}
return sendEmail.request(emailData)
}
module.exports = {
NAME,
sendMessage
}

219
package-lock.json generated
View file

@ -2819,6 +2819,14 @@
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
"integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ=="
}, },
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"requires": {
"es6-promise": "^4.0.3"
}
},
"escape-html": { "escape-html": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@ -4957,6 +4965,11 @@
"resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
"integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
}, },
"inflection": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz",
"integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY="
},
"inflight": { "inflight": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@ -5818,6 +5831,168 @@
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz",
"integrity": "sha1-5W1jVBSO3o13B7WNFDIg/QjfD9U=" "integrity": "sha1-5W1jVBSO3o13B7WNFDIg/QjfD9U="
}, },
"mailgun-js": {
"version": "0.21.0",
"resolved": "https://registry.npmjs.org/mailgun-js/-/mailgun-js-0.21.0.tgz",
"integrity": "sha512-hqw0jL+GABT61jy3ZpfaLZXGGB2SvTJ9oMM3KwLpdf0WlwAETkjRipQvLiQj/MUNLOT9/bz2O4K+7c1Mt376fw==",
"requires": {
"async": "^2.6.1",
"debug": "~3.1.0",
"form-data": "^2.3.2",
"inflection": "~1.12.0",
"is-stream": "^1.1.0",
"path-proxy": "~1.0.0",
"promisify-call": "^2.0.2",
"proxy-agent": "^3.0.3",
"tsscmp": "^1.0.6"
},
"dependencies": {
"agent-base": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
"integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
"requires": {
"es6-promisify": "^5.0.0"
}
},
"async": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
"integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
"requires": {
"lodash": "^4.17.10"
}
},
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
},
"combined-stream": {
"version": "1.0.6",
"resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"form-data": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "1.0.6",
"mime-types": "^2.1.12"
}
},
"http-proxy-agent": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
"integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
"requires": {
"agent-base": "4",
"debug": "3.1.0"
}
},
"https-proxy-agent": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
"integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
"requires": {
"agent-base": "^4.1.0",
"debug": "^3.1.0"
}
},
"ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
"integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
},
"lru-cache": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
"integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"pac-proxy-agent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz",
"integrity": "sha512-AOUX9jES/EkQX2zRz0AW7lSx9jD//hQS8wFXBvcnd/J2Py9KaMJMqV/LPqJssj1tgGufotb2mmopGPR15ODv1Q==",
"requires": {
"agent-base": "^4.2.0",
"debug": "^3.1.0",
"get-uri": "^2.0.0",
"http-proxy-agent": "^2.1.0",
"https-proxy-agent": "^2.2.1",
"pac-resolver": "^3.0.0",
"raw-body": "^2.2.0",
"socks-proxy-agent": "^4.0.1"
}
},
"pac-resolver": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz",
"integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==",
"requires": {
"co": "^4.6.0",
"degenerator": "^1.0.4",
"ip": "^1.1.5",
"netmask": "^1.0.6",
"thunkify": "^2.1.2"
}
},
"proxy-agent": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.3.tgz",
"integrity": "sha512-PXVVVuH9tiQuxQltFJVSnXWuDtNr+8aNBP6XVDDCDiUuDN8eRCm+ii4/mFWmXWEA0w8jjJSlePa4LXlM4jIzNA==",
"requires": {
"agent-base": "^4.2.0",
"debug": "^3.1.0",
"http-proxy-agent": "^2.1.0",
"https-proxy-agent": "^2.2.1",
"lru-cache": "^4.1.2",
"pac-proxy-agent": "^3.0.0",
"proxy-from-env": "^1.0.0",
"socks-proxy-agent": "^4.0.1"
}
},
"smart-buffer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.1.tgz",
"integrity": "sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg=="
},
"socks": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.2.1.tgz",
"integrity": "sha512-0GabKw7n9mI46vcNrVfs0o6XzWzjVa3h6GaSo2UPxtWAROXUWavfJWh1M4PR5tnE0dcnQXZIDFP4yrAysLze/w==",
"requires": {
"ip": "^1.1.5",
"smart-buffer": "^4.0.1"
}
},
"socks-proxy-agent": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz",
"integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==",
"requires": {
"agent-base": "~4.2.0",
"socks": "~2.2.0"
}
}
}
},
"make-dir": { "make-dir": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz",
@ -6630,6 +6805,21 @@
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true "dev": true
}, },
"path-proxy": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/path-proxy/-/path-proxy-1.0.0.tgz",
"integrity": "sha1-GOijaFn8nS8aU7SN7hOFQ8Ag3l4=",
"requires": {
"inflection": "~1.3.0"
},
"dependencies": {
"inflection": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/inflection/-/inflection-1.3.8.tgz",
"integrity": "sha1-y9Fg2p91sUw8xjV41POWeEvzAU4="
}
}
},
"path-to-regexp": { "path-to-regexp": {
"version": "0.1.7", "version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
@ -7012,6 +7202,14 @@
"resolved": "https://registry.npmjs.org/promise-sequential/-/promise-sequential-1.1.1.tgz", "resolved": "https://registry.npmjs.org/promise-sequential/-/promise-sequential-1.1.1.tgz",
"integrity": "sha1-956JUO+G56eoW/MgRSZDWS9tL7I=" "integrity": "sha1-956JUO+G56eoW/MgRSZDWS9tL7I="
}, },
"promisify-call": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/promisify-call/-/promisify-call-2.0.4.tgz",
"integrity": "sha1-1IwtRWUszM1SgB3ey9UzptS9X7o=",
"requires": {
"with-callback": "^1.0.2"
}
},
"protobufjs": { "protobufjs": {
"version": "5.0.3", "version": "5.0.3",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz",
@ -7038,11 +7236,15 @@
"socks-proxy-agent": "2" "socks-proxy-agent": "2"
} }
}, },
"proxy-from-env": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
"integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4="
},
"pseudomap": { "pseudomap": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
"dev": true
}, },
"pump": { "pump": {
"version": "1.0.2", "version": "1.0.2",
@ -8400,6 +8602,11 @@
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
"dev": true "dev": true
}, },
"tsscmp": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
"integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA=="
},
"tunnel-agent": { "tunnel-agent": {
"version": "0.4.3", "version": "0.4.3",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
@ -8764,6 +8971,11 @@
} }
} }
}, },
"with-callback": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/with-callback/-/with-callback-1.0.2.tgz",
"integrity": "sha1-oJYpuakgAo1yFAT7Q1vc/1yRvCE="
},
"wordwrap": { "wordwrap": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
@ -8940,8 +9152,7 @@
"yallist": { "yallist": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
"dev": true
}, },
"yargs": { "yargs": {
"version": "3.32.0", "version": "3.32.0",

View file

@ -33,6 +33,7 @@
"lnd-async": "^1.2.0", "lnd-async": "^1.2.0",
"lodash": "^4.17.10", "lodash": "^4.17.10",
"longjohn": "^0.2.12", "longjohn": "^0.2.12",
"mailgun-js": "^0.21.0",
"make-dir": "^1.0.0", "make-dir": "^1.0.0",
"mem": "^1.1.0", "mem": "^1.1.0",
"migrate": "^0.2.2", "migrate": "^0.2.2",
@ -42,7 +43,6 @@
"nano-markdown": "^1.2.0", "nano-markdown": "^1.2.0",
"ndjson": "^1.5.0", "ndjson": "^1.5.0",
"node-hkdf-sync": "^1.0.0", "node-hkdf-sync": "^1.0.0",
"node-mailjet": "^3.2.1",
"numeral": "^2.0.3", "numeral": "^2.0.3",
"p-each-series": "^1.0.0", "p-each-series": "^1.0.0",
"pg-native": "^2.2.0", "pg-native": "^2.2.0",

View file

@ -37740,8 +37740,8 @@ var _user$project$NavBar$view = F2(
ctor: '::', ctor: '::',
_0: { _0: {
ctor: '_Tuple3', ctor: '_Tuple3',
_0: 'Mailjet', _0: 'Mailgun',
_1: _user$project$CoreTypes$AccountRoute('mailjet'), _1: _user$project$CoreTypes$AccountRoute('mailgun'),
_2: true _2: true
}, },
_1: { _1: {

View file

@ -1,6 +1,6 @@
{ {
"code": "mailjet", "code": "mailgun",
"display": "Mailjet", "display": "Mailgun",
"fields": [ "fields": [
{ {
"code": "apiKey", "code": "apiKey",
@ -10,9 +10,9 @@
"value": "" "value": ""
}, },
{ {
"code": "apiSecret", "code": "domain",
"display": "API secret", "display": "Domain",
"fieldType": "password", "fieldType": "string",
"required": true, "required": true,
"value": "" "value": ""
}, },