summaryrefslogtreecommitdiff
path: root/server/lib/webhook
diff options
context:
space:
mode:
authorJulie Lala <jules@okfoc.us>2015-01-23 02:35:46 -0500
committerJulie Lala <jules@okfoc.us>2015-01-23 02:35:46 -0500
commite0debd761bc24cd42f4140d2b6cc32a4271fe975 (patch)
tree1a4a4c770845c517590645a37a1a9453d445a218 /server/lib/webhook
parent3eee6a15ee44a75f6deedd073f60b88d342d56ef (diff)
getting webhooks in order.. didnt need as many as i thought
Diffstat (limited to 'server/lib/webhook')
-rw-r--r--server/lib/webhook/config.js2
-rw-r--r--server/lib/webhook/index.js119
-rw-r--r--server/lib/webhook/webhook.js118
3 files changed, 155 insertions, 84 deletions
diff --git a/server/lib/webhook/config.js b/server/lib/webhook/config.js
index ecafeb3..3d7e1c5 100644
--- a/server/lib/webhook/config.js
+++ b/server/lib/webhook/config.js
@@ -1,5 +1,5 @@
module.exports = {
- API_KEY: require('process').env['VVALLS_RECURLY_SECRET'],
+ API_KEY: process.env['VVALLS_RECURLY_SECRET'],
SUBDOMAIN: 'vvalls',
ENVIRONMENT: 'sandbox',
DEBUG: true,
diff --git a/server/lib/webhook/index.js b/server/lib/webhook/index.js
index ebbd01a..7dd68e6 100644
--- a/server/lib/webhook/index.js
+++ b/server/lib/webhook/index.js
@@ -1,89 +1,42 @@
-// // where should this live?
-// app.get('/subscribe/webhook', views.subscription.webhook);
+var config = require('../../../config.json'),
+ http = require('http'),
+ express = require('express'),
+ bodyParser = require('body-parser'),
+ mongoose = require('mongoose');
-/* jshint node: true */
+var http = require('http'),
+ express = require('express'),
+ bodyParser = require('body-parser'),
+ multer = require('multer'),
+ MongoStore = require('connect-mongo')(express),
+ passport = require('passport'),
+ path = require('path'),
+ mongoose = require('mongoose');
-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('./config'));
+var app = express()
+var server
+var DATABASE_URI = process.env.MONGOLAB_URI || ('mongodb://' + config.databaseHost + '/vvalls')
-var parser = new xml2js.Parser();
-// fs.readFile('./foo.xml', function(err, data) {
-// parser.parseString(data, function (err, result) {
-// console.log(inspect(result, { colors: true, depth: Infinity }));
-// });
-// });
+var site = {}
-/*
-app.use(express.basicAuth(function(user, pass, callback) {
- var result = (user === 'testUser' && pass === 'testPass');
- callback(null, result);
-}));
-*/
+site.init = function(){
+ mongoose.connect(DATABASE_URI, {}, site.ready);
+}
+
+site.ready = function(){
+ app.set('port', config.webhookPort);
+ app.use(bodyParser());
+ app.use(express.query());
+ app.set('env', config.env.production ? "production" : "development")
+ app.get('env') === 'development' && app.use(express.errorHandler());
-var subscription = module.exports = {
-
- callbacks: {
- // accounts
- new_account_notification: function(data){
- //
- },
- canceled_account_notification: function(data){
- },
- billing_info_updated_notification: function(data){
- },
- reactivated_account_notification: function(data){
- },
-
- // invoices
- new_invoice_notification: function(data){
- },
- closed_invoice_notification: function(data){
- },
- past_due_invoice_notification: function(data){
- },
-
- // subscriptions
- new_subscription_notification: function(data){
- },
- updated_subscription_notification: function(data){
- },
- canceled_subscription_notification: function(data){
- },
- expired_subscription_notification: function(data){
- },
- renewed_subscription_notification: function(data){
- },
-
- // payments
- successful_payment_notification: function(data){
- },
- failed_payment_notification: function(data){
- },
- successful_refund_notification: function(data){
- },
- void_payment_notification: function(data){
- },
- },
-
- // need a route for the webhook,
- // then calls to get appropriate info from the recurly api
- webhook: function(req, res){
- res.status(200).end()
- parser.parseString(data, function (err, result) {
- console.log(inspect(result, { colors: true, depth: Infinity }));
- for (var i in data) {
- if (subscription.callbacks[i]) {
- subscription.callbacks[i](data[i])
- }
- }
- });
- },
+ server = http.createServer(app)
+ server.listen(app.get('port'), function () {
+ console.log('Webhook server listening on port ' + app.get('port'));
+ });
+
+ app.get('/', function(req,res){ res.send('HI THERE') })
+ app.get('/subscribe/webhook', require('./webhook').webhook);
}
+
+site.init()
diff --git a/server/lib/webhook/webhook.js b/server/lib/webhook/webhook.js
new file mode 100644
index 0000000..067af30
--- /dev/null
+++ b/server/lib/webhook/webhook.js
@@ -0,0 +1,118 @@
+// // where should this live?
+// app.get('/subscribe/webhook', views.subscription.webhook);
+
+/*
+app.use(express.basicAuth(function(user, pass, callback) {
+ var result = (user === 'testUser' && pass === 'testPass');
+ callback(null, result);
+}));
+*/
+
+
+/* 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('./config'));
+
+var parser = new xml2js.Parser();
+
+var subscription = module.exports = {
+ plan_level: {
+ free: 0,
+ basic: 1,
+ pro: 2,
+ },
+
+ callbacks: {
+ // accounts
+ new_account_notification: function(data){
+ // fires on successful signup
+ // use the account_code to find the user,
+ },
+ canceled_account_notification: function(data){
+ },
+ billing_info_updated_notification: function(data){
+ },
+ reactivated_account_notification: function(data){
+ },
+
+ // invoices
+ new_invoice_notification: function(data){
+ },
+ closed_invoice_notification: function(data){
+ },
+ past_due_invoice_notification: function(data){
+ },
+
+ // subscriptions
+ new_subscription_notification: function(data){
+ var account = data.account
+ User.findOne({ _id: account.account_code }, function(err, user){
+ if (err) return;
+ var subscription = data.subscription
+
+ var plan = subscription.plan.plan_code.split("_")
+ var plan_type = plan[0]
+ var plan_period = plan[1]
+
+ user.plan_type = plan_type
+ user.plan_level = subscription.plan_level[plan_type]
+
+ // subscription.uuid
+ // subscription.subscription_add_ons[]
+ // subscription.subscription_add_ons[0].quantity
+ user.save(function(){
+ })
+
+ })
+ },
+ updated_subscription_notification: function(data){
+ },
+ canceled_subscription_notification: function(data){
+ },
+ expired_subscription_notification: function(data){
+ },
+ renewed_subscription_notification: function(data){
+ },
+
+ // payments
+ successful_payment_notification: function(data){
+ var account = data.account
+ User.findOne({ _id: account.account_code }, function(err, user){
+ if (err) return;
+ user.last_charged = new Date(data.transaction.date)
+ user.save(function(){
+ })
+ })
+ },
+ failed_payment_notification: function(data){
+ },
+ successful_refund_notification: function(data){
+ },
+ void_payment_notification: function(data){
+ },
+
+ },
+
+ // need a route for the webhook,
+ // then calls to get appropriate info from the recurly api
+ webhook: function(req, res){
+ res.status(200).end()
+ parser.parseString(data, function (err, result) {
+ console.log(inspect(result, { colors: true, depth: Infinity }));
+ for (var i in data) {
+ if (subscription.callbacks[i]) {
+ subscription.callbacks[i](data[i])
+ }
+ }
+ });
+ },
+}