mailchimp-lite
Version:
A lightweight wrapper for Mailchimp's v2 and v3 apis
101 lines (76 loc) • 3.14 kB
JavaScript
;
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'];