ifpaytt
Version:
Trigger IFTTT actions with Bitcoin Lightning payments
46 lines (36 loc) • 1.65 kB
JavaScript
;
var pay = require('paypercall')({
chargeUrl: process.env.CHARGE_URL,
chargeToken: process.env.CHARGE_TOKEN,
dbPath: process.env.DB_PATH || 'ifpaytt.db',
currency: process.env.CURRENCY,
secret: process.env.TOKEN_SECRET,
invoiceExp: process.env.INVOICE_EXPIRY,
accessExp: process.env.ACCESS_EXPIRY
});
var ifttt = require('./ifttt')(process.env.IFTTT_KEY, process.env.IFTTT_PREFIX || 'ifpaytt_');
var getPrice = function getPrice(event) {
return process.env['PRICE_' + event.toUpperCase()];
};
var app = require('express')();
app.set('env', process.env.NODE_ENV || 'production');
app.set('port', process.env.PORT || 6000);
app.set('host', process.env.HOST || 'localhost');
app.set('trust proxy', process.env.PROXIED || 'loopback');
app.enable('strict routing');
app.enable('case sensitive routing');
app.disable('x-powered-by');
app.disable('etag');
app.use(require('body-parser').json());
app.use(require('body-parser').urlencoded({ extended: true }));
app.use(require('morgan')('dev'));
app.post('/:event([a-z0-9_]+)', function (req, res, next) {
return (req.price = getPrice(req.params.event)) ? pay(req.price)(req, res, next) : next('route');
}, function (req, res, next) {
return ifttt(req.params.event, req.body.value1 || req.invoice.msatoshi_received, req.body.value2 || req.invoice.id, req.body.value3 || { invoice: req.invoice, body: req.body }).then(function (r) {
return res.send(r.text);
}).catch(next);
});
app.listen(app.settings.port, app.settings.host, function (_) {
return console.log('Running on http://' + app.settings.host + ':' + app.settings.port);
});