UNPKG

node-recurly

Version:

Library for accessing the api for the Recurly recurring billing service.

212 lines (199 loc) 9.28 kB
(function(){ var Js2xml = require('js2xml').Js2Xml, Client = require('./client'), utils = require('./utils'), router = require('./routes/'); module.exports = function(config){ var routes = router.routes(config.API_VERSION ? config.API_VERSION : '2'); var t = Client.create(config); //http://docs.recurly.com/api/accounts this.accounts = { list: function(callback, filter){ t.request(utils.addQueryParams(routes.accounts.list, filter), callback); }, get: function(accountcode, callback){ t.request(utils.addParams(routes.accounts.get, {account_code: accountcode}), callback); }, create: function(details, callback){ t.request(routes.accounts.create, callback, new Js2xml('account',details).toString()); }, update: function(accountcode, details, callback){ t.request(utils.addParams(routes.accounts.update, {account_code: accountcode}), callback, new Js2xml('account', details).toString()); }, close: function(accountcode, callback){ t.request(utils.addParams(routes.accounts.close, {account_code: accountcode}), callback); }, reopen: function(accountcode, callback){ t.request(utils.addParams(routes.accounts.reopen, {account_code: accountcode}), callback) } } this.adjustments = { get: function(accountcode, callback){ t.request(utils.addParams(routes.adjustments.get, {account_code: accountcode}), callback); }, create: function(accountcode, details, callback){ t.request(utils.addParams(routes.adjustments.create, {account_code: accountcode}), callback, new Js2xml('adjustment',details).toString()); }, remove: function(uuid, callback){ t.request(utils.addParams(routes.adjustments.remove, {uuid: uuid}), callback); } } //http://docs.recurly.com/api/billing-info this.billingInfo = { update: function(accountcode, details, callback){ t.request(utils.addParams(routes.billingInfo.update, {account_code: accountcode} ), callback, new Js2xml('billing_info', details).toString()); }, get: function(accountcode, callback){ t.request(utils.addParams(routes.billingInfo.get, {account_code: accountcode} ), callback); }, remove: function(accountcode, callback){ t.request(utils.addParams(routes.billingInfo.remove, {account_code: accountcode} ), callback); } } //http://docs.recurly.com/api/coupons this.coupons = { list: function(callback, filter){ t.request(utils.addQueryParams(routes.coupons.list, filter), callback); }, get: function(couponcode, callback){ t.request(utils.addParams(routes.coupons.get, {coupon_code: couponcode}), callback); }, create: function(details, callback){ t.request(routes.coupons.create, callback, new Js2xml('coupon', details).toString()); }, deactivate: function(couponcode, callback){ t.request(utils.addParams(routes.coupons.deactivate, {coupon_code: couponcode}), callback); } } this.couponRedemption = { redeem: function(couponcode, details, callback){ t.request(utils.addParams(routes.couponRedemption.redeem, {coupon_code: couponcode}), callback, new Js2xml('redemption', details).toString()); }, get: function(accountcode, callback){ t.request(utils.addParams(routes.couponRedemption.get, {account_code: accountcode}), callback); }, remove: function(accountcode, callback){ t.request(utils.addParams(routes.couponRedemption.remove, {account_code: accountcode}), callback); }, getByInvoice: function(invoicenumber, callback){ t.request(utils.addParams(routes.couponRedemption.getByInvoice, {invoice_number: invoicenumber}), callback) } } this.invoices = { list: function(callback, filter){ t.request(utils.addQueryParams(routes.invoices.list, filter), callback); }, listByAccount: function(accountcode, callback, filter){ t.request( utils.addParams( utils.addQueryParams(routes.invoices.listByAccount, filter) , {account_code: accountcode}) , callback) }, get: function(invoicenumber, callback){ t.request(utils.addParams(routes.invoices.get, {invoice_number: invoicenumber}), callback); }, create: function(accountcode, details, callback){ t.request(utils.addParams(routes.invoices.create, {account_code: accountcode}), callback, new Js2xml('invoice', details).toString()); }, markSuccessful: function(invoicenumber, callback){ t.request(utils.addParams(routes.invoices.markSuccessful, {invoice_number: invoicenumber}), callback); }, markFailed: function(invoicenumber, callback){ t.request(utils.addParams(routes.invoices.markFailed, {invoice_number: invoicenumber}), callback); } } this.plans = { list: function(callback, filter){ t.request(utils.addQueryParams(routes.plans.list, filter), callback); }, get: function(plancode, callback){ t.request(utils.addParams(routes.plans.get, {plan_code: plancode}), callback); }, create: function(details, callback){ t.request(routes.plans.create, callback, new Js2xml('plan', details).toString()); }, update: function(plancode, details, callback){ t.request(utils.addParams(routes.plans.update, {plan_code: plancode}), callback, new Js2xml('plan', details).toString()); }, remove: function(plancode, callback){ t.request(utils.addParams(routes.plans.remove, {plan_code: plancode}), callback); } } this.planAddons = { list: function(plancode, callback, filter){ t.request(utils.addParams(utils.addQueryParams(routes.planAddons.list, filter), {plan_code: plancode}), callback); }, get: function(plancode, addoncode, callback){ t.request(utils.addParams(routes.planAddons.get, {plan_code: plancode, addon_code: addoncode}), callback); }, create: function(plancode, details, callback){ t.request(utils.addParams(routes.planAddons.create, {plan_code: plancode}), callback, new Js2xml('add_on', details).toString()); }, update: function(plancode, addoncode, details, callback){ t.request(utils.addParams( routes.planAddons.update, { plan_code: plancode, add_on_code: addoncode }), callback, new Js2xml('add_on', details).toString()); }, remove: function(plancode, addoncode, callback){ t.request(utils.addParams(routes.planAddons.remove, {plan_code: plancode, add_on_code: addoncode}), callback); } } this.subscriptions = { list: function(callback, filter){ t.request(utils.addQueryParams(routes.subscriptions.list, filter), callback); }, listByAccount: function(accountcode, callback){ t.request(utils.addParams(routes.subscriptions.listByAccount, {account_code: accountcode}), callback); }, get: function(uuid, callback){ t.request(utils.addParams(routes.subscriptions.get, {uuid: uuid}), callback); }, create: function(details, callback){ t.request(routes.subscriptions.create, callback, new Js2xml('subscription', details).toString()); }, update: function(uuid, details, callback){ t.request(utils.addParams(routes.subscriptions.update, {uuid: uuid}), callback, new Js2xml('subscription', details).toString()); }, cancel: function(uuid, callback){ t.request(utils.addParams(routes.subscriptions.cancel, {uuid: uuid}), callback); }, reactivate: function(uuid, callback){ t.request(utils.addParams(routes.subscriptions.reactivate, {uuid: uuid}), callback); }, terminate: function(uuid, refundType, callback){ t.request(utils.addParams(routes.subscriptions.terminate, {uuid: uuid, refund_type: refundType}), callback); }, postpone: function(uuid, nextRenewalDate, callback){ t.request(utils.addParams(routes.subscriptions.postpone, {uuid: uuid, next_renewal_date: nextRenewalDate}), callback); } } this.transactions = { list: function(callback, filter){ t.request(utils.addQueryParams(routes.transactions.list, filter), callback); }, listByAccount: function(accountCode, callback, filter){ t.request( utils.addParams( utils.addQueryParams(routes.transactions.listByAccount, filter), {account_code: accountCode}), callback); }, get: function(id, callback){ t.request(utils.addParams(routes.transactions.get, {'id': id}), callback); }, create: function(details, callback){ t.request(routes.transactions.create, callback, new Js2xml('transaction', details).toString()); }, refund: function(id, callback, amount){ var route = utils.addParams(routes.transactions.refund, {id: id}); if(amount){ route = utils.addQueryParams(route, { amount_in_cents: amount }); } t.request(route, callback) } } }//end class })();