UNPKG

dyn-js

Version:
1,145 lines (1,100 loc) 37.8 kB
// Generated by CoffeeScript 1.7.1 (function() { 'use strict'; var Dyn, callWithError, crudAccounts, crudGslb, crudGslbRegion, crudHttpRedirect, crudMessaging, crudRecipients, crudRecord, crudReportsBounces, crudReportsClicks, crudReportsComplaints, crudReportsDelivered, crudReportsIssues, crudReportsOpens, crudReportsSentMail, crudSendMail, crudSenders, crudSuppressions, crudTraffic, crudZone, extract, extractData, extractMsgData, extractMsgs, extractRecords, extractZones, failBool, https, identity, isOk, log, makePromise, msgIsOk, okBool, q, qs, throwMessages, throwMsgMessages, _, _request_q; _ = require('underscore'); q = require('q'); https = require('https'); log = require('npmlog'); qs = require('querystring'); _.templateSettings = { interpolate: /\{\{(.+?)\}\}/g }; _request_q = function(dyn, method, path, body, isTraffic) { var cc, defer, headers, host, opts, port, req; log.verbose('dyn', "invoking via https : " + method + " " + path); defer = q.defer(); cc = function(a, b, c) { log.verbose('dyn', "invocation returned : " + method + " " + path); if (a !== null) { return defer.reject.call({}, [a]); } return defer.resolve.call({}, [a, b, c]); }; host = dyn.defaults.host; port = dyn.defaults.port; path = dyn.defaults.prefix + path; headers = _.clone(dyn.defaults.headers); if (body && typeof body !== 'string') { body = JSON.stringify(body); headers['Content-Length'] = body.length; } else { if (body) { headers['Content-Length'] = body.length; } else { headers['Content-Length'] = 0; } } if (isTraffic) { if (!((path.indexOf("/REST/Session/") === 0) && (method === 'POST'))) { if (dyn.defaults.token === null) { throw new Error('must open a session first'); } headers['Auth-Token'] = dyn.defaults.token; } } opts = { hostname: host, port: port, method: method, path: path, headers: headers }; log.silly('dyn', "request : " + (JSON.stringify(opts))); req = https.request(opts, function(res) { var data; data = ''; res.on('readable', function() { var chunk; chunk = res.read(); return data += chunk.toString('ascii'); }); return res.on('end', function() { var response; log.silly('dyn', "response : " + data); response = JSON.parse(data); return cc(null, response, res); }); }); req.on('error', function(e) { log.warn('dyn', "error : " + (JSON.stringify(e))); return cc(e); }); if (body) { req.write(body); } req.end(); return defer.promise; }; crudTraffic = function(path, custom) { var methods; custom || (custom = {}); methods = { _list: 'GET', _create: 'POST', _get: 'GET', _update: 'PUT', _destroy: 'DELETE' }; return _.reduce(_.keys(methods), function(a, x) { a[x] || (a[x] = {}); a[x]._path = function(dyn, data) { var cpath, _ref; cpath = (custom != null ? (_ref = custom[x]) != null ? _ref.path : void 0 : void 0) || path; return _.template(cpath)(data); }; a[x]._call = function(dyn, pathData, bodyData) { log.silly('dyn', "api call : " + x + " -> " + path); return _request_q(dyn, (custom != null ? custom.method : void 0) || methods[x], a[x]._path(dyn, pathData), bodyData, true); }; return a; }, {}); }; crudMessaging = function(path, custom) { var allKeys, methods; custom || (custom = {}); methods = { _list: 'GET', _create: 'POST', _get: 'GET', _update: 'POST', _destroy: 'POST' }; allKeys = _.uniq(_.keys(custom).concat(_.keys(methods))); return _.reduce(allKeys, function(a, x) { a[x] || (a[x] = {}); a[x]._path = function(dyn, data) { var cpath, _ref; cpath = (custom != null ? (_ref = custom[x]) != null ? _ref.path : void 0 : void 0) || path; data.e = escape; return _.template(cpath)(data); }; a[x]._call = function(dyn, pathData, bodyData) { var method, _ref; log.silly('dyn', "api call : " + x + " -> " + path); method = (custom != null ? (_ref = custom[x]) != null ? _ref.method : void 0 : void 0) || methods[x]; if (method === 'GET') { return _request_q(dyn, method, a[x]._path(dyn, pathData) + "?" + qs.stringify(bodyData)); } else { return _request_q(dyn, method, a[x]._path(dyn, pathData), qs.stringify(bodyData)); } }; return a; }, {}); }; crudRecord = function(type) { return crudTraffic("/" + type + "Record/", { _list: { path: "/" + type + "Record/{{zone}}/{{fqdn}}" }, _create: { path: "/" + type + "Record/{{zone}}/{{fqdn}}/" }, _get: { path: "/" + type + "Record/{{zone}}/{{fqdn}}/{{id}}" }, _update: { path: "/" + type + "Record/{{zone}}/{{fqdn}}/{{id}}" }, _destroy: { path: "/" + type + "Record/{{zone}}/{{fqdn}}/{{id}}" } }); }; crudZone = function() { return crudTraffic("/Zone/", { _list: { path: "/Zone/" }, _create: { path: "/Zone/{{zone}}/" }, _get: { path: "/Zone/{{zone}}/" }, _update: { path: "/Zone/{{zone}}/" }, _destroy: { path: "/Zone/{{zone}}/" } }); }; crudHttpRedirect = function() { return crudTraffic("/HTTPRedirect/", { _get: { path: "/HTTPRedirect/{{zone}}/{{fqdn}}" }, _update: { path: "/HTTPRedirect/{{zone}}/{{fqdn}}" }, _create: { path: "/HTTPRedirect/{{zone}}/{{fqdn}}" }, _destroy: { path: "/HTTPRedirect/{{zone}}/{{fqdn}}" } }); }; crudGslb = function() { return crudTraffic("/GSLB/", { _list: { path: "/GSLB/{{zone}}" }, _create: { path: "/GSLB/{{zone}}/{{fqdn}}" }, _get: { path: "/GSLB/{{zone}}/{{fqdn}}" }, _update: { path: "/GSLB/{{zone}}/{{fqdn}}" }, _destroy: { path: "/GSLB/{{zone}}/{{fqdn}}" } }); }; crudGslbRegion = function() { return crudTraffic("/GSLBRegion/", { _list: { path: "/GSLBRegion/{{zone}}" }, _create: { path: "/GSLBRegion/{{zone}}/{{fqdn}}" }, _get: { path: "/GSLBRegion/{{zone}}/{{fqdn}}" }, _update: { path: "/GSLBRegion/{{zone}}/{{fqdn}}/{{region_code}}" }, _destroy: { path: "/GSLBRegion/{{zone}}/{{fqdn}}" } }); }; crudSenders = function(type) { return crudMessaging("/senders", { _list: { path: "/senders" }, _create: { path: "/senders" }, _update: { path: "/senders" }, _details: { path: "/senders/details", method: "GET" }, _status: { path: "/senders/status", method: "GET" }, _dkim: { path: "/senders/dkim", method: "POST" }, _destroy: { path: "/senders/delete" } }); }; crudAccounts = function(type) { return crudMessaging("/accounts", { _list: { path: "/accounts" }, _create: { path: "/accounts" }, _destroy: { path: "/accounts/delete" }, _list_xheaders: { path: "/accounts/xheaders", method: "GET" }, _update_xheaders: { path: "/accounts/xheaders", method: "POST" } }); }; crudRecipients = function(type) { return crudMessaging("/recipients", { _activate: { path: "/recipients/activate", method: "POST" }, _status: { path: "/recipients/status", method: "GET" } }); }; crudSendMail = function(type) { return crudMessaging("/send/", { _create: { path: "/send" } }); }; crudSuppressions = function(type) { return crudMessaging("/suppressions", { _list: { path: "/suppressions" }, _create: { path: "/suppressions" }, _activate: { path: "/suppressions/activate", method: "POST" }, _count: { path: "/suppressions/count", method: "GET" } }); }; crudReportsSentMail = function(type) { return crudMessaging("/reports", { _list: { path: "/reports/sent" }, _count: { path: "/reports/sent/count", method: "GET" } }); }; crudReportsDelivered = function(type) { return crudMessaging("/reports", { _list: { path: "/reports/delivered" }, _count: { path: "/reports/delivered/count", method: "GET" } }); }; crudReportsBounces = function(type) { return crudMessaging("/reports", { _list: { path: "/reports/bounces" }, _count: { path: "/reports/bounces/count", method: "GET" } }); }; crudReportsComplaints = function(type) { return crudMessaging("/reports", { _list: { path: "/reports/complaints" }, _count: { path: "/reports/complaints/count", method: "GET" } }); }; crudReportsIssues = function(type) { return crudMessaging("/reports", { _list: { path: "/reports/issues" }, _count: { path: "/reports/issues/count", method: "GET" } }); }; crudReportsOpens = function(type) { return crudMessaging("/reports", { _list: { path: "/reports/opens" }, _count: { path: "/reports/opens/count", method: "GET" }, _unique: { path: "/reports/opens/unique", method: "GET" }, _unique_count: { path: "/reports/opens/count/unique", method: "GET" } }); }; crudReportsClicks = function(type) { return crudMessaging("/reports", { _list: { path: "/reports/clicks" }, _count: { path: "/reports/clicks/count", method: "GET" }, _unique: { path: "/reports/clicks/unique", method: "GET" }, _unique_count: { path: "/reports/clicks/count/unique", method: "GET" } }); }; makePromise = function(val) { var r; r = q.defer(); r.resolve(val); return r.promise; }; callWithError = function(funProm, description, successFilter, successCase, errorCase) { return funProm.then(function(x) { return makePromise(successFilter(x[1]) ? (log.silly('dyn', "api call returned successfully : " + (JSON.stringify(x[1]))), successCase(x[1])) : (log.info('dyn', "api call returned error : " + (JSON.stringify(x[1]))), errorCase(x[1]))); }, function(x) { log.warn('dyn', "unexpected error : " + (JSON.stringify(x[1]))); return errorCase(x); }); }; isOk = function(x) { return x && (x.status === 'success'); }; identity = function(x) { return x; }; extract = function(key) { return function(x) { return x != null ? x[key] : void 0; }; }; extractData = extract('data'); extractMsgs = extract('msgs'); msgIsOk = function(x) { return x && x.response && (x.response.status === 200); }; extractMsgData = function(x) { var _ref; return x != null ? (_ref = x.response) != null ? _ref.data : void 0 : void 0; }; okBool = function() { return true; }; failBool = function() { return false; }; extractRecords = function(x) { if (!(x && x.data)) { return []; } return _(x.data).map(function(r) { var v; v = r.split("/"); return { type: v[2].replace(/Record$/, ""), zone: v[3], fqdn: v[4], id: v[5] }; }); }; extractZones = function(x) { if (!(x && x.data)) { return []; } return _(x.data).map(function(r) { var v; v = r.split("/"); return { zone: v[3] }; }); }; throwMessages = function(x) { throw x.msgs || "unknown exception when calling api"; }; throwMsgMessages = function(x) { var _ref; throw (x != null ? (_ref = x.response) != null ? _ref.message : void 0 : void 0) || "unknown exception when calling api"; }; Dyn = function(opts) { var allow, dyn, messaging, messaging_defaults, recordTypes, traffic, traffic_defaults, whiteList; traffic_defaults = _.defaults((opts != null ? opts.traffic : void 0) || {}, { host: 'api2.dynect.net', port: 443, prefix: '/REST', headers: { 'Content-Type': 'application/json', 'User-Agent': 'dyn-js v1.0.3' }, token: null }); messaging_defaults = _.defaults((opts != null ? opts.messaging : void 0) || {}, { host: 'emailapi.dynect.net', port: 443, prefix: '/rest/json', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'dyn-js v1.0.3' }, apikey: null }); dyn = {}; dyn.traffic = {}; traffic = dyn.traffic; dyn.log = log; dyn.log.level = "info"; traffic.defaults = _.clone(traffic_defaults); traffic.withZone = function(zone) { traffic.defaults.zone = zone; return traffic; }; traffic.zone = crudZone(); traffic.zone.list = function() { return callWithError(traffic.zone._list._call(traffic, {}, {}), "zone.list", isOk, extractZones, throwMessages); }; traffic.zone.create = function(args) { return callWithError(traffic.zone._create._call(traffic, { zone: traffic.defaults.zone }, args), "zone.create", isOk, extractData, throwMessages); }; traffic.zone.get = function() { return callWithError(traffic.zone._list._call(traffic, { zone: traffic.defaults.zone }, {}), "zone.get", isOk, extractData, throwMessages); }; traffic.zone.destroy = function() { return callWithError(traffic.zone._destroy._call(traffic, { zone: traffic.defaults.zone }, {}), "zone.destroy", isOk, extractMsgs, throwMessages); }; traffic.zone.publish = function() { return callWithError(traffic.zone._update._call(traffic, { zone: traffic.defaults.zone }, { publish: true }), "zone.publish", isOk, extractData, throwMessages); }; traffic.zone.freeze = function() { return callWithError(traffic.zone._update._call(traffic, { zone: traffic.defaults.zone }, { freeze: true }), "zone.freeze", isOk, extractData, throwMessages); }; traffic.zone.thaw = function() { return callWithError(traffic.zone._update._call(traffic, { zone: traffic.defaults.zone }, { thaw: true }), "zone.thaw", isOk, extractData, throwMessages); }; traffic.session = crudTraffic("/Session/"); traffic.session.create = function() { return callWithError(traffic.session._create._call(traffic, {}, _.pick(traffic.defaults, 'customer_name', 'user_name', 'password')), "session.create", isOk, function(x) { traffic.defaults.token = x.data.token; return makePromise(x); }, throwMessages); }; traffic.session.destroy = function() { return callWithError(traffic.session._destroy._call(traffic, {}, {}), "session.destroy", isOk, function(x) { traffic.defaults.token = null; return makePromise(x); }, throwMessages); }; recordTypes = ['All', 'ANY', 'A', 'AAAA', 'CERT', 'CNAME', 'DHCID', 'DNAME', 'DNSKEY', 'DS', 'IPSECKEY', 'KEY', 'KX', 'LOC', 'MX', 'NAPTR', 'NS', 'NSAP', 'PTR', 'PX', 'RP', 'SOA', 'SPF', 'SRV', 'SSHFP', 'TXT']; whiteList = { 'All': 'list', 'ANY': 'list', 'SOA': { 'list': true, 'get': true, 'update': true } }; allow = function(x, op) { return !whiteList[x] || (_.isString(whiteList[x]) && whiteList[x] === op) || (_.isObject(whiteList[x]) && whiteList[x][op]); }; traffic.record = _.reduce(recordTypes, function(a, x) { var type; type = "_" + x; a[type] = crudRecord(x); if (allow(x, 'list')) { a[type].list = (function(fqdn) { return callWithError(traffic.record[type]._list._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn || '' }, {}), "record._" + type + ".list", isOk, extractRecords, throwMessages); }); } if (allow(x, 'create')) { a[type].create = (function(fqdn, record) { return callWithError(traffic.record[type]._create._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, record), "record._" + type + ".create", isOk, extractData, throwMessages); }); } if (allow(x, 'destroy')) { a[type].destroy = (function(fqdn, opt_id) { return callWithError(traffic.record[type]._destroy._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn, id: opt_id || '' }, {}), "record._" + type + ".destroy", isOk, extractMsgs, throwMessages); }); } if (allow(x, 'get')) { a[type].get = (function(fqdn, id) { return callWithError(traffic.record[type]._get._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn, id: id }, {}), "record._" + type + ".get", isOk, extractRecords, throwMessages); }); } if (allow(x, 'update')) { a[type].update = (function(fqdn, id, record) { return callWithError(traffic.record[type]._update._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn, id: id }, record), "record._" + type + ".update", isOk, extractData, throwMessages); }); } if (allow(x, 'replace')) { a[type].replace = (function(fqdn, records) { var arg; arg = {}; arg["" + x + "Records"] = records; return callWithError(traffic.record[type]._update._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn, id: '' }, arg), "record._" + type + ".replace", isOk, extractData, throwMessages); }); } return a; }, {}); traffic.http_redirect = crudHttpRedirect(); traffic.http_redirect.list = function(fqdn) { return callWithError(traffic.http_redirect._list._call(traffic, { zone: traffic.defaults.zone }, {}), "http_redirect.list", isOk, extractData, throwMessages); }; traffic.http_redirect.get = function(fqdn, detail) { return callWithError(traffic.http_redirect._get._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, { detail: detail || 'N' }), "http_redirect.get", isOk, extractData, throwMessages); }; traffic.http_redirect.create = function(fqdn, code, keep_uri, url) { return callWithError(traffic.http_redirect._create._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, { code: code, keep_uri: keep_uri, url: url }), "http_redirect.create", isOk, extractData, throwMessages); }; traffic.http_redirect.update = function(fqdn, code, keep_uri, url) { return callWithError(traffic.http_redirect._update._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, { code: code, keep_uri: keep_uri, url: url }), "http_redirect.update", isOk, extractData, throwMessages); }; traffic.http_redirect.destroy = function(fqdn) { return callWithError(traffic.http_redirect._destroy._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, {}), "http_redirect.destroy", isOk, extractData, throwMessages); }; traffic.gslb = crudGslb(); traffic.gslb.list = function(detail) { return callWithError(traffic.gslb._list._call(traffic, { zone: traffic.defaults.zone }, { detail: detail || 'N' }), "gslb.list", isOk, extractData, throwMessages); }; traffic.gslb.get = function(fqdn) { return callWithError(traffic.gslb._get._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, {}), "gslb.get", isOk, extractData, throwMessages); }; traffic.gslb.create = function(fqdn, opts) { return callWithError(traffic.gslb._create._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, opts), "gslb.create", isOk, extractData, throwMessages); }; traffic.gslb.destroy = function(fqdn) { return callWithError(traffic.gslb._destroy._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, {}), "gslb.destroy", isOk, extractData, throwMessages); }; traffic.gslb.update = function(fqdn, opts) { return callWithError(traffic.gslb._update._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, opts), "gslb.update", isOk, extractData, throwMessages); }; traffic.gslb.activate = function(fqdn) { return callWithError(traffic.gslb._update._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, { activate: true }), "gslb.activate", isOk, extractData, throwMessages); }; traffic.gslb.deactivate = function(fqdn) { return callWithError(traffic.gslb._update._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, { deactivate: true }), "gslb.deactivate", isOk, extractData, throwMessages); }; traffic.gslb.recover = function(fqdn) { return callWithError(traffic.gslb._update._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, { recover: true }), "gslb.recover", isOk, extractData, throwMessages); }; traffic.gslb.recoverip = function(fqdn, opts) { return callWithError(traffic.gslb._update._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, opts), "gslb.recoverip", isOk, extractData, throwMessages); }; traffic.gslbRegion = crudGslbRegion(); traffic.gslbRegion.list = function(detail) { return callWithError(traffic.gslbRegion._list._call(traffic, { zone: traffic.defaults.zone }, { detail: detail || 'N' }), "gslbRegion.list", isOk, extractData, throwMessages); }; traffic.gslbRegion.get = function(fqdn) { return callWithError(traffic.gslbRegion._get._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, {}), "gslbRegion.get", isOk, extractData, throwMessages); }; traffic.gslbRegion.create = function(fqdn, opts) { return callWithError(traffic.gslbRegion._create._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, opts), "gslbRegion.create", isOk, extractData, throwMessages); }; traffic.gslbRegion.destroy = function(fqdn) { return callWithError(traffic.gslbRegion._destroy._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn }, {}), "gslbRegion.destroy", isOk, extractData, throwMessages); }; traffic.gslbRegion.update = function(fqdn, region_code, opts) { return callWithError(traffic.gslbRegion._update._call(traffic, { zone: traffic.defaults.zone, fqdn: fqdn, region_code: region_code }, opts), "gslbRegion.update", isOk, extractData, throwMessages); }; dyn.messaging = {}; messaging = dyn.messaging; messaging.defaults = _.clone(messaging_defaults); messaging.senders = crudSenders(); messaging.senders.list = function(startindex) { return callWithError(messaging.senders._list._call(messaging, {}, _.defaults({ startindex: startindex || '0' }, { apikey: messaging.defaults.apikey })), "senders.list", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.senders.create = function(email, seeding) { return callWithError(messaging.senders._create._call(messaging, {}, _.defaults({ emailaddress: email, seeding: seeding || '0' }, { apikey: messaging.defaults.apikey })), "senders.create", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.senders.update = function(email, seeding) { return callWithError(messaging.senders._update._call(messaging, {}, _.defaults({ emailaddress: email }, { apikey: messaging.defaults.apikey })), "senders.update", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.senders.details = function(email) { return callWithError(messaging.senders._details._call(messaging, {}, _.defaults({ emailaddress: email }, { apikey: messaging.defaults.apikey })), "senders.details", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.senders.status = function(email) { return callWithError(messaging.senders._status._call(messaging, {}, _.defaults({ emailaddress: email }, { apikey: messaging.defaults.apikey })), "senders.status", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.senders.dkim = function(email, dkim) { return callWithError(messaging.senders._dkim._call(messaging, {}, _.defaults({ emailaddress: email, dkim: dkim }, { apikey: messaging.defaults.apikey })), "senders.dkim", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.senders.destroy = function(email) { return callWithError(messaging.senders._destroy._call(messaging, {}, _.defaults({ emailaddress: email }, { apikey: messaging.defaults.apikey })), "senders.destroy", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.accounts = crudAccounts(); messaging.accounts.create = function(username, password, companyname, phone, address, city, state, zipcode, country, timezone, bounceurl, spamurl, unsubscribeurl, trackopens, tracelinks, trackunsubscribes, generatenewapikey) { return callWithError(messaging.accounts._create._call(messaging, {}, _.defaults({ username: username, password: password, companyname: companyname, phone: phone, address: address, city: city, state: state, zipcode: zipcode, country: country, timezone: timezone, bounceurl: bounceurl, spamurl: spamurl, unsubscribeurl: unsubscribeurl, trackopens: trackopens, tracelinks: tracelinks, trackunsubscribes: trackunsubscribes, generatenewapikey: generatenewapikey }, { apikey: messaging.defaults.apikey })), "accounts.create", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.accounts.list = function(startindex) { return callWithError(messaging.accounts._list._call(messaging, {}, _.defaults({ startindex: startindex || '0' }, { apikey: messaging.defaults.apikey })), "accounts.list", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.accounts.destroy = function(username) { return callWithError(messaging.accounts._destroy._call(messaging, {}, _.defaults({ username: username }, { apikey: messaging.defaults.apikey })), "accounts.destroy", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.accounts.list_xheaders = function() { return callWithError(messaging.accounts._list_xheaders._call(messaging, {}, _.defaults({}, { apikey: messaging.defaults.apikey })), "accounts.list_xheaders", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.accounts.update_xheaders = function(xh1, xh2, xh3, xh4) { return callWithError(messaging.accounts._update_xheaders._call(messaging, {}, _.defaults({ xheader1: xh1, xheader2: xh2, xheader3: xh3, xheader4: xh4 }, { apikey: messaging.defaults.apikey })), "accounts.update_xheaders", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.recipients = crudRecipients(); messaging.recipients.status = function(email) { return callWithError(messaging.recipients._status._call(messaging, {}, _.defaults({ emailaddress: email }, { apikey: messaging.defaults.apikey })), "recipients.status", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.recipients.activate = function(email) { return callWithError(messaging.recipients._activate._call(messaging, {}, _.defaults({ emailaddress: email }, { apikey: messaging.defaults.apikey })), "recipients.activate", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.suppressions = crudSuppressions(); messaging.suppressions.count = function(startdate, enddate) { return callWithError(messaging.suppressions._count._call(messaging, {}, _.defaults({}, { apikey: messaging.defaults.apikey })), "suppressions.count", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.suppressions.list = function(startdate, enddate, startindex) { return callWithError(messaging.suppressions._list._call(messaging, {}, _.defaults({ startdate: startdate, enddate: enddate, startindex: startindex || '0' }, { apikey: messaging.defaults.apikey })), "suppressions.list", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.suppressions.create = function(email) { return callWithError(messaging.suppressions._create._call(messaging, {}, _.defaults({ emailaddress: email }, { apikey: messaging.defaults.apikey })), "suppressions.create", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.suppressions.activate = function(email) { return callWithError(messaging.suppressions._activate._call(messaging, {}, _.defaults({ emailaddress: email }, { apikey: messaging.defaults.apikey })), "suppressions.activate", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.delivery = crudReportsDelivered(); messaging.delivery.count = function(starttime, endtime) { return callWithError(messaging.delivery._count._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "delivery.count", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.delivery.list = function(starttime, endtime, startindex) { return callWithError(messaging.delivery._list._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime, startindex: startindex || '0' }, { apikey: messaging.defaults.apikey })), "delivery.list", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.sent_mail = crudReportsSentMail(); messaging.sent_mail.count = function(starttime, endtime) { return callWithError(messaging.sent_mail._count._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "sent_mail.count", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.sent_mail.list = function(starttime, endtime, startindex) { return callWithError(messaging.sent_mail._list._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime, startindex: startindex || '0' }, { apikey: messaging.defaults.apikey })), "sent_mail.list", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.bounces = crudReportsBounces(); messaging.bounces.count = function(starttime, endtime) { return callWithError(messaging.bounces._count._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "bounces.count", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.bounces.list = function(starttime, endtime, startindex) { return callWithError(messaging.bounces._list._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime, startindex: startindex || '0' }, { apikey: messaging.defaults.apikey })), "bounces.list", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.complaints = crudReportsComplaints(); messaging.complaints.count = function(starttime, endtime) { return callWithError(messaging.complaints._count._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "complaints.count", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.complaints.list = function(starttime, endtime, startindex) { return callWithError(messaging.complaints._list._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime, startindex: startindex || '0' }, { apikey: messaging.defaults.apikey })), "complaints.list", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.issues = crudReportsIssues(); messaging.issues.count = function(starttime, endtime) { return callWithError(messaging.issues._count._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "issues.count", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.issues.list = function(starttime, endtime, startindex) { return callWithError(messaging.issues._list._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime, startindex: startindex || '0' }, { apikey: messaging.defaults.apikey })), "issues.list", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.opens = crudReportsOpens(); messaging.opens.count = function(starttime, endtime) { return callWithError(messaging.opens._count._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "opens.count", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.opens.list = function(starttime, endtime, startindex) { return callWithError(messaging.opens._list._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "opens.list", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.opens.unique = function(starttime, endtime, startindex) { return callWithError(messaging.opens._unique._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "opens.unqiue", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.opens.unique_count = function(starttime, endtime) { return callWithError(messaging.opens._unique_count._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "opens.unique_count", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.clicks = crudReportsClicks(); messaging.clicks.count = function(starttime, endtime) { return callWithError(messaging.clicks._count._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "clicks.count", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.clicks.list = function(starttime, endtime, startindex) { return callWithError(messaging.clicks._list._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "clicks.list", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.clicks.unique = function(starttime, endtime, startindex) { return callWithError(messaging.clicks._unique._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "clicks.unique", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.clicks.unique_count = function(starttime, endtime) { return callWithError(messaging.clicks._unique_count._call(messaging, {}, _.defaults({ starttime: starttime, endtime: endtime }, { apikey: messaging.defaults.apikey })), "clicks.unique_count", msgIsOk, extractMsgData, throwMsgMessages); }; messaging.send_mail = crudSendMail(); messaging.send_mail.create = function(from, to, subject, bodytext, bodyhmtl, cc, replyto, xheaders) { return callWithError(messaging.send_mail._create._call(messaging, {}, _.defaults({ from: from, to: to, subject: subject, bodytext: bodytext, bodyhtml: bodyhmtl, cc: cc, replyto: replyto, xheaders: xheaders }, { apikey: messaging.defaults.apikey })), "send_mail.create", msgIsOk, extractMsgData, throwMsgMessages); }; return dyn; }; module.exports = Dyn; }).call(this);