vulpes
Version:
Job management framework
64 lines (55 loc) • 1.97 kB
JavaScript
;
var dataURIToBuffer = require("data-uri-to-buffer");
var parseDataURI = require("parse-data-uri");
var _require = require("./symbols.js"),
ATTACHMENT_PREFIX = _require.ATTACHMENT_PREFIX,
ATTACHMENT_REXP = _require.ATTACHMENT_REXP;
function extractAttachments(resultSet) {
var results = Object.assign({}, resultSet);
var attachments = [];
var attachmentKeys = Object.keys(results).filter(function (key) {
return ATTACHMENT_REXP.test(key);
});
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = attachmentKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var attachmentKey = _step.value;
var id = attachmentKey.replace(ATTACHMENT_PREFIX, "");
var attachment = results[attachmentKey];
attachment.id = id;
var data = attachment.data,
mime = attachment.mime;
if (/^text\//.test(mime)) {
var _parseDataURI = parseDataURI(data),
textBuffer = _parseDataURI.data;
attachment.data = textBuffer.toString("utf8");
} else {
attachment.data = dataURIToBuffer(data);
}
attachments.push(attachment);
delete results[attachmentKey];
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return {
results: results,
attachments: attachments
};
}
module.exports = {
extractAttachments: extractAttachments
};