UNPKG

@luminati-io/mountebank

Version:

Over the wire test doubles

45 lines (38 loc) 1.08 kB
'use strict'; const jsonPathPlus = require('jsonpath-plus'), helpers = require('../util/helpers.js'); const { JSONPath } = jsonPathPlus; /** * Shared logic for xpath selector * @module */ /** * Returns xpath value(s) from given xml * @param {String} selector - The xpath selector * @param {String} possibleJSON - the JSON string * @param {Logger} logger - Optional, used to log JSON parsing errors * @returns {Object} */ function select (selector, possibleJSON, logger) { const isObject = helpers.isObject; try { const json = isObject(possibleJSON) ? possibleJSON : JSON.parse(possibleJSON), result = JSONPath(selector, json); if (typeof result === 'string') { return result; } else if (result.length === 0) { return undefined; } else { return result; } } catch (e) { if (logger) { logger.warn(`Cannot parse as JSON: ${JSON.stringify(possibleJSON)}`); } return undefined; } } module.exports = { select };