api-spec-converter
Version:
Convert API descriptions between popular formats such as OpenAPI(fka Swagger), RAML, API Blueprint, WADL, etc.
67 lines (55 loc) • 1.74 kB
JavaScript
;
var Inherits = require('util').inherits;
var Promise = require('bluebird');
var _ = require('lodash');
var BaseFormat = require('../base_format.js');
var Util = require('../util.js');
var validator = require('swagger2openapi/validate.js');
var openapi2swagger = require('../converters/openapi3_to_swagger2.js');
var OpenApi3 = module.exports = function() {
OpenApi3.super_.apply(this, arguments);
this.format = 'openapi_3';
this.converters.swagger_2 =
Promise.method(oa => {
let converter = new openapi2swagger(oa);
return converter.convert();
});
};
Inherits(OpenApi3, BaseFormat);
OpenApi3.prototype.formatName = 'openapi';
OpenApi3.prototype.supportedVersions = ['3.0'];
OpenApi3.prototype.getFormatVersion = function () {
var versionComponents = this.spec.openapi.split('.');
return versionComponents[0]+'.'+versionComponents[1];
};
OpenApi3.prototype.fillMissing = function (dummyData) {
dummyData = dummyData || {
info: {
title: '< An API title here >',
version: '< An API version here >'
}
};
this.spec = _.merge(dummyData, this.spec);
};
OpenApi3.prototype.parsers = {
'JSON': Util.parseJSON,
'YAML': Util.parseYAML
};
OpenApi3.prototype.checkFormat = function (spec) {
return !_.isUndefined(spec.openapi);
};
OpenApi3.prototype.validate = function (callback) {
var openapi = this.spec;
var promise = new Promise(function(resolve,reject){
var result = {};
try {
result = validator.validateSync(openapi,result,function(err,options){
});
}
catch (ex) {
result.errors = {message: ex.message, context: result.context};
}
resolve(result);
});
return Promise.resolve(promise).asCallback(callback);
};