const html_parser = require('node-html-parser');
const time = require('../../../utils/time');
module.exports = {
get_date_header_parser: function (attr_name = 'date') {
return {
'Date': function (header_value) {
return {
[attr_name]: time.moment(header_value).format('YYYY-MM-DD')
};
}
}
},
parsers_html_wrapper: function (get_transaction_from_html) {
return function (parts) {
for (const part of parts) {
const transaction = recursive_parts_search(part, get_transaction_from_html);
if (transaction) return transaction;
}
return {};
}
}
}
function recursive_parts_search(part, get_transaction_from_html) {
if (part.mimeType === 'text/html' && part.body && part.body.size > 0 && part.body.data) {
const transaction = get_transaction_from_html(
html_parser.parse(
Buffer.from(part.body.data, 'base64').toString()
)
);
if (transaction) return transaction;
} else if (Array.isArray(part.parts)) {
for (const sub_part of part.parts) {
const transaction = recursive_parts_search(sub_part, get_transaction_from_html)
if (transaction) return transaction;
}
}
return null;
}