sms.js 742 Bytes
'use strict';

const moment = require('moment');

function extract(raw) {
    if (!raw) return null;
    const lines = raw.trim().split(/[\n\r]+/m);
    if (!lines) return null;

    const metadata = lines[0].split(',').map(el => el.replace(/"/g, '')) || [];

    const tsFromRaw = `${metadata[3]} ${metadata[4].replace(/\+\d+/, '')}`;
    const ts = moment(tsFromRaw, 'YY/MM/DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss');

    const result = {
        metadata: {
            status: metadata[0].replace(/^.+: /, ''),
            from: metadata[1].replace(/^\+/, ''),
            ts,
            raw: lines[0],
        },
        message: lines.slice(1).join('\n').trim(),
        raw,
    };

    return result;
}

exports.extract = extract;