UNPKG

mailchimp-lite

Version:

A lightweight wrapper for Mailchimp's v2 and v3 apis

57 lines (45 loc) 1.47 kB
import request from 'request'; import merge from 'lodash.merge'; import rsvp from 'rsvp'; export default class API { constructor({datacenter, key, version} = {}) { 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}`; } prepareRequestOptions () {} request(method, endpoint, data) { let requestOptions = merge({ method, uri: `${this.apiRoot}${endpoint}`, body: data }, this.prepareRequestOptions(endpoint, data)); if (data) { requestOptions.json = true; } return new rsvp.Promise((resolve, reject) => { request(requestOptions, (err, res, body) => { if (err) { return reject(err); } if (res && res.statusCode >= 200 && res.statusCode < 300) { if (requestOptions.json) { return resolve(body); } let parsedBody; try { parsedBody = JSON.parse(body) } catch (e) { parsedBody = {} } return resolve(parsedBody); } err = new Error(`Mailchimp Error: ${res.statusCode}`); err.response = res; reject(err); }); }); } }