@zingersystems/parse-server-api-mail-adapter
Version:
Universal Mail Adapter for Parse Server, supports any email provider REST API, with localization and templates - both built-in and external.
121 lines (98 loc) • 4.5 kB
JavaScript
function ownKeys(e, r) {var t = Object.keys(e);if (Object.getOwnPropertySymbols) {var o = Object.getOwnPropertySymbols(e);r && (o = o.filter(function (r) {return Object.getOwnPropertyDescriptor(e, r).enumerable;})), t.push.apply(t, o);}return t;}function _objectSpread(e) {for (var r = 1; r < arguments.length; r++) {var t = null != arguments[r] ? arguments[r] : {};r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {_defineProperty(e, r, t[r]);}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));});}return e;}function _defineProperty(e, r, t) {return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e;}function _toPropertyKey(t) {var i = _toPrimitive(t, "string");return "symbol" == typeof i ? i : i + "";}function _toPrimitive(t, r) {if ("object" != typeof t || !t) return t;var e = t[Symbol.toPrimitive];if (void 0 !== e) {var i = e.call(t, r || "default");if ("object" != typeof i) return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return ("string" === r ? String : Number)(t);} /**
* @class ApiPayloadConverter
* @description Converter of mail payload for various mail provider APIs.
*/
class ApiPayloadConverter {
/**
* @description Converts the mail payload for the official Mailgun client.
* @param {Object} originalPayload The original payload (provider agnostic).
* @returns {Object} The payload according to Mailgun client specification.
*/
static mailgun(originalPayload) {
// Clone payload
const payload = Object.assign({}, originalPayload);
// Transform reply-to
if (payload.replyTo) {
payload['h:Reply-To'] = payload.replyTo;
delete payload.replyTo;
}
return payload;
}
/**
* @description Converts the mail payload for the AWS Simple Mail Service (AWS JavaScript SDK v3).
* @param {Object} originalPayload The original payload (provider agnostic).
* @returns {Object} The payload according to AWS SDK specification.
*/
static awsSes(originalPayload) {
// Clone payload
const payload = Object.assign({}, originalPayload);
// Transform sender
payload.Source = [payload.from];
delete payload.from;
// Transform recipient
payload.Destination = {
ToAddresses: [payload.to]
};
delete payload.to;
// Transform reply-to
if (payload.replyTo) {
payload.ReplyToAddresses = [payload.replyTo];
delete payload.replyTo;
}
// If message has content
if (payload.subject || payload.text || payload.html) {
// Set default message
payload.Message = {};
// Transform subject
if (payload.subject) {
payload.Message.Subject = {
Data: payload.subject,
Charset: 'UTF-8'
};
delete payload.subject;
}
// If message has body
if (payload.text || payload.html) {
// Set default body
payload.Message.Body = {};
// Transform plain-text
if (payload.text) {
payload.Message.Body.Text = {
Charset: 'UTF-8',
Data: payload.text
};
delete payload.text;
}
// Transform HTML
if (payload.html) {
payload.Message.Body.Html = {
Charset: 'UTF-8',
Data: payload.html
};
delete payload.html;
}
}
}
return payload;
}
/**
* @description Converts the mail payload for the official Sendgrid client.
* This is just for a very basic use case and discouraged for use with this version.
* @param {Object} originalPayload The original payload (provider agnostic).
* @returns {Object} The payload according to Mailgun client specification.
*/
static sendgrid(originalPayload) {
const payload = {
to: originalPayload.to,
from: originalPayload.from, // Change to your verified sender
subject: originalPayload.subject,
text: originalPayload.text,
html: originalPayload.html,
templateId: originalPayload.templateName,
dynamicTemplateData: _objectSpread(_objectSpread({}, originalPayload.extra), originalPayload.placeholders)
};
return payload;
}
}
module.exports = ApiPayloadConverter;
//# sourceMappingURL=ApiPayloadConverter.js.map
;