summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-02-02 13:24:03 -0500
committerJules Laplace <jules@okfoc.us>2015-02-02 13:24:03 -0500
commit466e56bbdcf1b713a91e77081237b3adf0b86ba0 (patch)
tree8a03d25a61ad30b8af6bd3b6df2a6232361c41fe
parentb9ad0704417aaa8cf4da7a1ec2109959622bd454 (diff)
using xml middleware parser for webhook
-rw-r--r--package.json1
-rw-r--r--server/lib/webhook/index.js2
-rw-r--r--server/lib/webhook/webhook.js191
3 files changed, 99 insertions, 95 deletions
diff --git a/package.json b/package.json
index 56ffcdf..7a504af 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,7 @@
"express": "~3.4.8",
"express-subdomain-handler": "~0.1.0",
"express-subdomains": "0.0.5",
+ "express-xml-bodyparser": "0.0.6",
"html-entities": "~1.0.10",
"intro.js": "^0.9.0",
"js2xml": "^1.0.0",
diff --git a/server/lib/webhook/index.js b/server/lib/webhook/index.js
index 11419c2..eb6a6b3 100644
--- a/server/lib/webhook/index.js
+++ b/server/lib/webhook/index.js
@@ -27,7 +27,7 @@ site.init = function(){
site.ready = function(){
app.set('port', config.webhookPort);
- app.use(bodyParser());
+ // app.use(bodyParser());
app.use(express.query());
app.set('env', config.env.production ? "production" : "development")
app.get('env') === 'development' && app.use(express.errorHandler());
diff --git a/server/lib/webhook/webhook.js b/server/lib/webhook/webhook.js
index 4f23d0b..21ff23d 100644
--- a/server/lib/webhook/webhook.js
+++ b/server/lib/webhook/webhook.js
@@ -12,15 +12,17 @@ app.use(express.basicAuth(function(user, pass, callback) {
/* jshint node: true */
var User = require('../schemas/User'),
- Subscription = require('../schemas/Subscription'),
- config = require('../../../config'),
- middleware = require('../middleware'),
- util = require('../util'),
- _ = require('lodash'),
- moment = require('moment'),
- xml2js = require('xml2js'),
- Recurly = require('node-recurly'),
- recurly = new Recurly(require('./recurly-config'));
+ Subscription = require('../schemas/Subscription'),
+ config = require('../../../config'),
+ middleware = require('../middleware'),
+ util = require('../util'),
+ _ = require('lodash'),
+ moment = require('moment'),
+ xml2js = require('xml2js'),
+ Recurly = require('node-recurly'),
+ recurly = new Recurly(require('./recurly-config'));
+
+var xml_bodyparser = require('express-xml-bodyparser');
var parser = new xml2js.Parser();
@@ -30,34 +32,34 @@ var subscribe = module.exports = {
basic: 1,
pro: 2,
},
-
+
callbacks: {
/*
- // accounts
- new_account_notification: function(data, user){
- // fires on successful signup
- },
- canceled_account_notification: function(data, user){
- },
- billing_info_updated_notification: function(data, user){
- },
- reactivated_account_notification: function(data, user){
- },
-
- // invoices
- new_invoice_notification: function(data, user){
- },
- closed_invoice_notification: function(data, user){
- },
- past_due_invoice_notification: function(data, user){
- },
+ // accounts
+ new_account_notification: function(data, user){
+ // fires on successful signup
+ },
+ canceled_account_notification: function(data, user){
+ },
+ billing_info_updated_notification: function(data, user){
+ },
+ reactivated_account_notification: function(data, user){
+ },
+
+ // invoices
+ new_invoice_notification: function(data, user){
+ },
+ closed_invoice_notification: function(data, user){
+ },
+ past_due_invoice_notification: function(data, user){
+ },
*/
- // subscriptions
- new_subscription_notification: function(data, user){
- var account = data.account
- Subscription.findOne({ "uuid": data.subscription.uuid }, function(err, subscription){
- if (err || subscription) return;
+ // subscriptions
+ new_subscription_notification: function(data, user){
+ var account = data.account
+ Subscription.findOne({ "uuid": data.subscription.uuid }, function(err, subscription){
+ if (err || subscription) return;
var plan = data.subscription.plan.plan_code.split("-")
var plan_type = plan[0]
@@ -66,75 +68,76 @@ var subscribe = module.exports = {
user.plan_type = plan_type
user.plan_level = subscribe.plan_level[plan_type]
- var subscriber = new Subscription ()
+ var subscriber = new Subscription ()
subscriber.uuid = data.subscription.uuid
- subscriber.user_id = user._id
+ subscriber.user_id = user._id
subscriber.plan_type = plan_type
subscriber.plan_period = plan_period
subscriber.plan_level = subscribe.plan_level[plan_type]
subscriber.add_ons = subscription.add_ons.map(function(add_on){
- return {
- name: add_on.plan,
- quantity: add_on.quantity,
- }
+ return {
+ name: add_on.plan,
+ quantity: add_on.quantity,
+ }
})
subscriber.save(function(err, data){
- if (err) return;
- user.save(function(err){
- // saved!
- })
+ if (err) return;
+ user.save(function(err){
+ // saved!
+ })
})
- })
- },
+ })
+ },
/*
- updated_subscription_notification: function(data, user){
- },
- canceled_subscription_notification: function(data, user){
- },
- expired_subscription_notification: function(data, user){
- },
- renewed_subscription_notification: function(data, user){
- },
-*/
- // payments
- successful_payment_notification: function(data, user){
- var account = data.account
- user.last_charged = new Date(data.transaction.date)
- user.save(function(){
- })
- },
+ updated_subscription_notification: function(data, user){
+ },
+ canceled_subscription_notification: function(data, user){
+ },
+ expired_subscription_notification: function(data, user){
+ },
+ renewed_subscription_notification: function(data, user){
+ },
+*/
+ // payments
+ successful_payment_notification: function(data, user){
+ var account = data.account
+ user.last_charged = new Date(data.transaction.date)
+ user.save(function(){
+ })
+ },
/*
- failed_payment_notification: function(data, user){
- },
- successful_refund_notification: function(data, user){
- },
- void_payment_notification: function(data, user){
- },
+ failed_payment_notification: function(data, user){
+ },
+ successful_refund_notification: function(data, user){
+ },
+ void_payment_notification: function(data, user){
+ },
*/
},
-
- execute: function(action, data){
- User.findOne({ _id: data.account.account_code }, function(err, user){
- if (err) { return }
- subscribe.callbacks[action](data, user)
- })
- },
-
+
+ execute: function(action, data){
+ User.findOne({ _id: data.account.account_code }, function(err, user){
+ if (err) { return }
+ subscribe.callbacks[action](data, user)
+ })
+ },
+
// then calls to get appropriate info from the recurly api
- handle: function(req, res){
- res.status(200).end()
- parser.parseString(data, function (err, result) {
- console.log(inspect(result, { colors: true, depth: Infinity }));
- for (var action in result) {
- if (subscribe.callbacks[action]) {
- subscribe.execute(action, result[action]);
- }
- }
- });
- },
-
- list: function(req, res){
+ handle: function(req, res){
+ console.log(req.body)
+ // parser.parseString(req.body, function (err, result) {
+ var result = req.body
+ console.log(inspect(result, { colors: true, depth: Infinity }));
+ for (var action in result) {
+ if (subscribe.callbacks[action]) {
+ subscribe.execute(action, result[action]);
+ return res.status(200).end()
+ }
+ }
+ },
+
+ list: function(req, res){
recurly.subscriptions.listByAccount(req.params.id, function(data){
if (data.data != 404) {
res.json(data)
@@ -145,10 +148,10 @@ var subscribe = module.exports = {
return
}
})
- },
-
- route: function(app){
- app.post('/subscribe/webhook', subscribe.handle);
- app.get('/subscribe/list/:id', subscribe.list);
- },
+ },
+
+ route: function(app){
+ app.post('/subscribe/webhook', xml_bodyparser(), subscribe.handle);
+ app.get('/subscribe/list/:id', subscribe.list);
+ },
}