UNPKG

composr-cli

Version:
56 lines (43 loc) 2.39 kB
'use strict'; var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _glob = require('glob'); var _glob2 = _interopRequireDefault(_glob); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _jsonSchemaGenerator = require('json-schema-generator'); var _jsonSchemaGenerator2 = _interopRequireDefault(_jsonSchemaGenerator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Build Responses for model */ var buildResponses = function buildResponses(phraseDir, phraseDirTmp, verb, phraseName, model, next) { (0, _glob2.default)(phraseDir + '/*.' + verb + '.response.*[0-9].json', null, function (err, files) { if (err) return next(err, model); if (files.length > 0) { files.forEach(function (responseFileName) { // responseFileName example: // 'src/phraseName/phraseName.get.response.401.json' var statusCode = responseFileName.split('.'); statusCode = statusCode[statusCode.length - 2]; var responseExample = _fs2.default.readFileSync(process.cwd() + '/' + responseFileName, 'utf8'); responseExample = JSON.parse(responseExample); var schema = void 0; try { schema = _fs2.default.readFileSync(process.cwd() + '/' + responseFileName.replace('.json', '.schema.json')); } catch (e) { schema = (0, _jsonSchemaGenerator2.default)(responseExample); } _fs2.default.writeFileSync(phraseDirTmp + phraseName + '.' + verb + '.response.' + statusCode + '.schema.json', (0, _stringify2.default)(schema, null, '\t'), 'utf8'); model[verb].doc.responses[statusCode] = model[verb].doc.responses[statusCode] || {}; model[verb].doc.responses[statusCode].body = model[verb].doc.responses[statusCode].body || {}; model[verb].doc.responses[statusCode].body['application/json'] = model[verb].doc.responses[statusCode].body['application/json'] || {}; model[verb].doc.responses[statusCode].body['application/json'].schema = (0, _stringify2.default)(schema, null, '\t'); model[verb].doc.responses[statusCode].body['application/json'].example = (0, _stringify2.default)(responseExample, null, '\t'); }); } // Final/ return next(null, model); }); }; module.exports = buildResponses;