UNPKG

mirage-openapi

Version:

Mock OpenAPI responses in ember-cli-mirage

51 lines (39 loc) 1.67 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _response = require('./response'); var _response2 = _interopRequireDefault(_response); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function generateRouteHandler(operation) { return function (mirageSchema, _ref) { var url = _ref.url, _ref$params = _ref.params, params = _ref$params === undefined ? {} : _ref$params, _ref$requestHeaders = _ref.requestHeaders, requestHeaders = _ref$requestHeaders === undefined ? {} : _ref$requestHeaders, _ref$requestBody = _ref.requestBody, requestBody = _ref$requestBody === undefined ? '{}' : _ref$requestBody, _ref$files = _ref.files, files = _ref$files === undefined ? [] : _ref$files; var body = JSON.parse(requestBody); var contentType = requestHeaders['Content-Type']; var validationResult = operation.validateRequest({ body: body, headers: requestHeaders, query: params, url: url, files: files }); if (validationResult.errors.length > 0) { return new _response2.default(400, { 'Content-Type': 'application/json' }, validationResult); } var sortedResponses = operation.getResponses().sort(function (resA, resB) { return resA.statusCode - resB.statusCode; }); var response = sortedResponses[0]; var responseBody = response.getExample(contentType) || response.getSample(); return new _response2.default(Number(response.statusCode), { 'Content-Type': 'application/json' }, responseBody); }; } exports.default = generateRouteHandler;