Skip to content
This repository has been archived by the owner on Jan 21, 2024. It is now read-only.

Commit

Permalink
Bump oas-raml-converter
Browse files Browse the repository at this point in the history
  • Loading branch information
agustin committed Dec 29, 2016
1 parent 023610e commit b19f034
Show file tree
Hide file tree
Showing 12 changed files with 26,581 additions and 15,751 deletions.
4 changes: 4 additions & 0 deletions .babelrc
@@ -0,0 +1,4 @@
{
"presets": ["latest"],
"plugins": []
}
12 changes: 6 additions & 6 deletions Gruntfile.js
Expand Up @@ -332,15 +332,15 @@ module.exports = function (grunt) {
},

browserify: {
apiSpecTransformer: {
oasRamlConverter: {
options: {
transform: ['browserify-global-shim'],
transform: ['browserify-global-shim', 'babelify'],
browserifyOptions: {
standalone: 'apiSpecTransformer'
standalone: 'oasRamlConverter'
}
},
files: {
'.tmp/api-spec-transformer/api-spec-transformer.js': 'node_modules/api-spec-transformer/index.js'
'.tmp/oas-raml-converter/oas-raml-converter.js': 'node_modules/oas-raml-converter/index.js'
}
},
jsTraverse: {
Expand Down Expand Up @@ -385,7 +385,7 @@ module.exports = function (grunt) {
grunt.registerTask('server', [
'jshint-once',
'browserify:jsTraverse',
'browserify:apiSpecTransformer',
'browserify:oasRamlConverter',
'less-and-autoprefixer',
'connect:livereload',
'open',
Expand All @@ -397,7 +397,7 @@ module.exports = function (grunt) {
'clean:build',
'browserify:jsTraverse',
'browserify:ramlSuggestions',
'browserify:apiSpecTransformer',
'browserify:oasRamlConverter',
'useminPrepare',
'less-and-autoprefixer',
'ngtemplates',
Expand Down
4 changes: 2 additions & 2 deletions app/index.html
Expand Up @@ -87,7 +87,7 @@
<!-- build:js({.,.tmp,app}) scripts/api-designer.js -->
<script src=".tmp/js-traverse/js-traverse.js"></script>
<script src=".tmp/raml-suggestions/raml-suggestions.js"></script>
<script src=".tmp/api-spec-transformer/api-spec-transformer.js"></script>
<script src=".tmp/oas-raml-converter/oas-raml-converter.js"></script>

<script src="vendor/scripts/codemirror.js"></script>
<script src="vendor/scripts/foldcode.js"></script>
Expand Down Expand Up @@ -129,7 +129,7 @@
<script src="scripts/services/raml-to-swagger.js"></script>
<script src="scripts/services/import-service.js"></script>
<script src="scripts/services/import-service-conflict-modal.js"></script>
<script src="scripts/services/api-spec-transformer.js"></script>
<script src="scripts/services/oas-raml-converter.js"></script>
<script src="scripts/services/js-traverse.js"></script>
<script src="scripts/services/ref-parser.js"></script>
<script src="scripts/filters/string-filters.js"></script>
Expand Down
5 changes: 5 additions & 0 deletions app/scripts/controllers/raml-editor-main-helpers.js
Expand Up @@ -6,6 +6,7 @@
return {
isRamlFile: isRamlFile,
isApiDefinition: isApiDefinition,
isApiDefinitionV08: isApiDefinitionV08,
isApiDefinitionLike: isApiDefinitionLike
};

Expand All @@ -25,6 +26,10 @@
return /^#%RAML\s(0\.8|1\.0)\s*$/.test(getFirstLine(raml));
}

function isApiDefinitionV08(raml) {
return /^#%RAML\s(0\.8)\s*$/.test(getFirstLine(raml));
}

function isTypedFragment(raml) {
return /^#%RAML\s1\.0\s(Trait|ResourceType|Library|Overlay|Extension|DataType|DocumentationItem|NamedExample|AnnotationTypeDeclaration|SecurityScheme)\s*$/.test(getFirstLine(raml));
}
Expand Down
14 changes: 9 additions & 5 deletions app/scripts/directives/raml-editor-export-menu.js
Expand Up @@ -29,9 +29,13 @@
}

function replaceExtension (path, ext) {
var index = path.lastIndexOf('.');
if (index > -1) {
path = path.substr(0, index);
var dot = path.lastIndexOf('.');
if (dot > -1) {
path = path.substr(0, dot);
}
var slash = path.lastIndexOf('/');
if (slash > -1) {
path = path.substr(slash + 1);
}
return path + '.' + ext;
}
Expand All @@ -52,7 +56,7 @@
var selectedFile = scope.fileBrowser.selectedFile;
ramlToSwagger.json(selectedFile).then(function (convert) {
var lines = JSON.stringify(convert.contents, null, 2);
saveFile(lines, replaceExtension(convert.name, 'json'));
saveFile(lines, replaceExtension(convert.name || convert.path, 'json'));
}).catch(function (error) {
broadcastError(error);
});
Expand All @@ -61,7 +65,7 @@
scope.exportYamlFiles = function exportYamlFiles() {
var selectedFile = scope.fileBrowser.selectedFile;
ramlToSwagger.yaml(selectedFile).then(function (convert) {
saveFile(convert.contents, replaceExtension(convert.name, 'yaml'));
saveFile(convert.contents, replaceExtension(convert.name || convert.path, 'yaml'));
}).catch(function (error) {
broadcastError(error);
});
Expand Down
Expand Up @@ -2,10 +2,10 @@
'use strict';

angular.module('ramlEditorApp')
.factory('apiSpecTransformer', function apiSpecTransformer(
.factory('oasRamlConverter', function oasRamlConverter(
$window
) {
return $window.apiSpecTransformer;
return $window.oasRamlConverter;
})
;
})();
45 changes: 25 additions & 20 deletions app/scripts/services/raml-to-swagger.js
Expand Up @@ -2,7 +2,7 @@
'use strict';

angular.module('ramlEditorApp')
.service('ramlToSwagger', function ramlToSwagger($q, ramlRepository, ramlEditorMainHelpers, apiSpecTransformer) {
.service('ramlToSwagger', function ramlToSwagger($q, $window, ramlRepository, ramlEditorMainHelpers, oasRamlConverter) {
var self = this;

function findRootRaml (selectedFile) {
Expand Down Expand Up @@ -36,36 +36,41 @@
}
}

function swaggerConverter () {
return new apiSpecTransformer.Converter(apiSpecTransformer.Formats.RAML10, apiSpecTransformer.Formats.SWAGGER);
function swaggerConverter (file) {
var from = ramlEditorMainHelpers.isApiDefinitionV08(file.contents) ? oasRamlConverter.Formats.RAML08 : oasRamlConverter.Formats.RAML10;
return new oasRamlConverter.Converter(from, oasRamlConverter.Formats.SWAGGER);
}

function doConvert (converter, file, format, deferred) {
try {
converter.convert(format, function (err, result) {
if (err) {
return deferred.reject(err);
function convertData(file, deferred, format) {
var options = {
format: format,
fsResolver: {
content: function content(path) {
throw new Error('ramlParser: loadPath: loadApi: content: ' + path + ': no such path');
},
contentAsync: function contentAsync(path) {
var file = ramlRepository.getByPath(path);
if (!file) {
return $q.reject('ramlEditorMain: loadRaml: contentAsync: ' + path + ': no such path');
}

return (file.loaded ? $q.when(file) : ramlRepository.loadFile({path: path})).then(function (file) {
return file.contents;
});
}
return deferred.resolve({name: file.name, contents: result});
});
} catch (err) {
deferred.reject(err);
}
}
}
};

function convertData (file, format, deferred, options) {
var converter = swaggerConverter();
converter.loadData(file.contents, options).then(function() {
doConvert(converter, file, format, deferred);
swaggerConverter(file).convertFile(file.path, options).then(function(result) {
deferred.resolve({name: file.name, path: file.path, contents: result});
}).catch(deferred.reject);
return deferred;
}

function toSwagger(format, selectedFile) {
var deferred = $q.defer();

findRootRaml(selectedFile).then(function (rootRaml) {
convertData(rootRaml, format, deferred);
convertData(rootRaml, deferred, format);
}).catch(function (err) {
deferred.reject(err);
});
Expand Down
54 changes: 11 additions & 43 deletions app/scripts/services/swagger-to-raml.js
Expand Up @@ -2,7 +2,7 @@
'use strict';

angular.module('ramlEditorApp')
.service('swaggerToRAML', function swaggerToRAML($window, $q, $http, importService, apiSpecTransformer) {
.service('swaggerToRAML', function swaggerToRAML($window, $q, $http, importService, oasRamlConverter) {
var self = this;

function replaceExtension (path, ext) {
Expand All @@ -14,24 +14,7 @@
}

function ramlConverter () {
return new apiSpecTransformer.Converter(apiSpecTransformer.Formats.SWAGGER, apiSpecTransformer.Formats.RAML10);
}

function doConvert (error, converter, deferred) {
if (error) {
deferred.reject(error);
}

try {
converter.convert('yaml', function (err, result) {
if (err) {
return deferred.reject(err);
}
return deferred.resolve(result);
});
} catch (err) {
deferred.reject(err);
}
return new oasRamlConverter.Converter(oasRamlConverter.Formats.SWAGGER, oasRamlConverter.Formats.RAML10);
}

function convertZip(root, contents) {
Expand Down Expand Up @@ -65,7 +48,7 @@
}

// custom fileResolver to take in memory files from the zip
var fileResolver = {
var fsResolver = {
canRead: function (url) {
return this.read(url) != null;
},
Expand All @@ -80,19 +63,15 @@
};

// convert main swagger spec
var deferredConverter = $q.defer();
var converter = ramlConverter();
converter.loadFile(toAbsolute(name), function (error) {
doConvert(error, converter, deferredConverter);
}, {
ramlConverter().convertFile(toAbsolute(name), {
resolve: {
file: fileResolver,
http: fileResolver
file: fsResolver,
http: fsResolver
}
});

return deferredConverter.promise.then(function(convertedData) {
}).then(function(convertedData) {
deferred.resolve({name:replaceExtension(name, 'raml'), content:convertedData});
}).catch(function(err) {
deferred.reject(err);
});
}

Expand All @@ -102,25 +81,14 @@
self.url = function convert(url) {
// fetch and convert single file
var deferred = $q.defer();
var converter = ramlConverter();
try {
converter.loadFile(url, function(error) {
doConvert(error, converter, deferred);
});
} catch (err) {
deferred.reject(err);
}

ramlConverter().convertFile(url, {format:'yaml'}).then(deferred.resolve).catch(deferred.reject);
return deferred.promise;
};

self.file = function zip(file) {
var deferred = $q.defer();
importService.readFile(file).then(function (content) {
var converter = ramlConverter();
converter.loadData(content).then(function(error) {
doConvert(error, converter, deferred);
}).catch(deferred.reject);
ramlConverter().convertData(content, {format:'yaml'}).then(deferred.resolve).catch(deferred.reject);
}).catch(deferred.reject);
return deferred.promise;
};
Expand Down

0 comments on commit b19f034

Please sign in to comment.