mirage-openapi
Version:
Mock OpenAPI responses in ember-cli-mirage
51 lines (39 loc) • 1.67 kB
JavaScript
'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;