function selectRowFromCSV()

in apps/mountebank-mock/mountebank-source/src/models/behaviors.js [422:461]


function selectRowFromCSV (csvConfig, keyValue, logger) {
    const delimiter = csvConfig.delimiter || ',',
        inputStream = fsExtra.createReadStream(csvConfig.path),
        parser = csvParse.parse({ delimiter: delimiter }),
        pipe = inputStream.pipe(parser);
    let headers;

    return new Promise(resolve => {
        inputStream.on('error', e => {
            logger.error('Cannot read ' + csvConfig.path + ': ' + e);
            resolve({});
        });

        pipe.on('data', function (rowArray) {
            if (!helpers.defined(headers)) {
                headers = rowArray;
                const keyOnHeader = containsKey(headers, csvConfig.keyColumn);
                if (!keyOnHeader) {
                    logger.error('CSV headers "' + headers + '" with delimiter "' + delimiter + '" does not contain keyColumn:"' + csvConfig.keyColumn + '"');
                    resolve({});
                }
            }
            else {
                const row = createRowObject(headers, rowArray);
                if (helpers.defined(row[csvConfig.keyColumn]) && row[csvConfig.keyColumn].localeCompare(keyValue) === 0) {
                    resolve(row);
                }
            }
        });

        pipe.on('error', e => {
            logger.debug('Error: ' + e);
            resolve({});
        });

        pipe.on('end', () => {
            resolve({});
        });
    });
}