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({});
});
});
}