mirage-openapi
Version:
Mock OpenAPI responses in ember-cli-mirage
55 lines (39 loc) • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _values = require('babel-runtime/core-js/object/values');
var _values2 = _interopRequireDefault(_values);
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
exports.default = function (_ref2) {
var request = _ref2.request,
routers = _ref2.routers;
var raiseError = function raiseError() {
var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'There is no handler available in your openAPI config for this route and HTTP method.';
throw new Error('MirageOpenAPI: There is no route defined which matches ' + request.url + '.\n' + message);
};
var routerConfig = routers.find(matchingRouter(request.url));
if (!routerConfig) {
raiseError('This url does not match any existing namespaces.');
}
var router = routerConfig.router,
namespace = routerConfig.namespace;
var routeConfigs = router.recognize(request.url.replace(namespace, ''));
if (!routeConfigs) {
raiseError();
}
var _Object$values$filter = (0, _values2.default)(routeConfigs).filter(function (routeConfig) {
return !!routeConfig.handler;
}),
_Object$values$filter2 = (0, _slicedToArray3.default)(_Object$values$filter, 1),
handler = _Object$values$filter2[0].handler;
return handler[request.method.toLowerCase()];
};
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function matchingRouter(url) {
return function (_ref) {
var namespace = _ref.namespace;
return url.startsWith(namespace);
};
}