UNPKG

mailchimp-lite

Version:

A lightweight wrapper for Mailchimp's v2 and v3 apis

101 lines (76 loc) 3.14 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } var _request2 = require('request'); var _request3 = _interopRequireDefault(_request2); var _lodashMerge = require('lodash.merge'); var _lodashMerge2 = _interopRequireDefault(_lodashMerge); var _rsvp = require('rsvp'); var _rsvp2 = _interopRequireDefault(_rsvp); var API = (function () { function API() { var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var datacenter = _ref.datacenter; var key = _ref.key; var version = _ref.version; _classCallCheck(this, API); if (!key) { throw new Error('Mailchimp API Key Required'); } if (!datacenter) { throw new Error('Mailchimp DataCenter Required'); } if (!version) { throw new Error('Mailchimp Version Required'); } this.key = key; this.datacenter = datacenter; this.version = version; this.apiRoot = 'https://' + this.datacenter + '.api.mailchimp.com/' + this.version; } _createClass(API, [{ key: 'prepareRequestOptions', value: function prepareRequestOptions() {} }, { key: 'request', value: function request(method, endpoint, data) { var requestOptions = (0, _lodashMerge2['default'])({ method: method, uri: '' + this.apiRoot + endpoint, body: data }, this.prepareRequestOptions(endpoint, data)); if (data) { requestOptions.json = true; } return new _rsvp2['default'].Promise(function (resolve, reject) { (0, _request3['default'])(requestOptions, function (err, res, body) { if (err) { return reject(err); } if (res && res.statusCode >= 200 && res.statusCode < 300) { if (requestOptions.json) { return resolve(body); } var parsedBody = undefined; try { parsedBody = JSON.parse(body); } catch (e) { parsedBody = {}; } return resolve(parsedBody); } err = new Error('Mailchimp Error: ' + res.statusCode); err.response = res; reject(err); }); }); } }]); return API; })(); exports['default'] = API; module.exports = exports['default'];