Skip to content

Commit

Permalink
Add codegen link for simple YAML
Browse files Browse the repository at this point in the history
  • Loading branch information
lqtian committed May 24, 2016
1 parent 3f14105 commit e003656
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 20 deletions.
5 changes: 5 additions & 0 deletions app/scripts/enums/simpleYaml.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
'use strict';

SwaggerEditor.config(function ($provide) {
$provide.value('simpleYaml', {model:'', swagger:''});
});
4 changes: 4 additions & 0 deletions config/defaults.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
"server": "http://generator.swagger.io/api/gen/servers/{language}",
"client": "http://generator.swagger.io/api/gen/clients/{language}"
},
"simpleyamlcodegen": {
"server": "http://localhost:9002/server/codegen/?name={language}",
"client": "http://localhost:9002/client/codegen/?name={language}"
},
"analytics": {
"google": {
"id": "UA-51231036-1"
Expand Down
11 changes: 8 additions & 3 deletions scripts/services/builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
var jsyaml = require('js-yaml');
var _ = require('lodash');

SwaggerEditor.service('Builder', function Builder(SwayWorker) {
SwaggerEditor.service('Builder', function Builder(SwayWorker, simpleYaml) {
var load = _.memoize(jsyaml.load);

/*
Expand Down Expand Up @@ -38,7 +38,8 @@ SwaggerEditor.service('Builder', function Builder(SwayWorker) {
}
var prom = new Promise(function(resolve1, reject1) {
if(enableSimpleYaml){
json = Morpho.convert(stringValue, 'yaml', 'swagger', {returnJSON:true, addDefaults:true}, function(errors){
var errors = [];
simpleYaml.model = Morpho.convertFrom['yaml'].call(Morpho, stringValue, errors, {addDefaults:true}, function(errors){
if(errors&&errors.length>0){
var newError = _.map(errors,function(error){
return {simpleYamlError:error};
Expand All @@ -51,7 +52,11 @@ SwaggerEditor.service('Builder', function Builder(SwayWorker) {
} else {
resolve1();
}
}).model;
});
var result;
if(!!simpleYaml.model){
simpleYaml.swagger = json = Morpho.convertTo['swagger'].call(Morpho, simpleYaml.model, errors, {returnJSON:true});
}
}
else {resolve1();}
});
Expand Down
56 changes: 39 additions & 17 deletions scripts/services/codegen.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ var angular = require('angular');
/*
* Code Generator service
*/
SwaggerEditor.service('Codegen', function Codegen($http, defaults, Storage,
SwaggerEditor.service('Codegen', function Codegen($http, $location, defaults, simpleYaml, Preferences, Storage,
YAML) {
this.getServers = function() {
if (!defaults.codegen.servers) {
return new Promise(function(resolve) {
resolve([]);
});
}
return $http.get(defaults.codegen.servers).then(function(resp) {
return $http.get(defaults.codegen.servers).then(function (resp) {
resp.data.push('csharp');
return resp.data;
});
};
Expand All @@ -29,25 +30,46 @@ SwaggerEditor.service('Codegen', function Codegen($http, defaults, Storage,
});
};

this.getSDK = function(type, language) {
var url = defaults.codegen[type].replace('{language}', language);
this.getSDK = function (type, language) {
var url;
if(Preferences.get('simpleYAML') && language === 'csharp')
{
url = defaults.simpleyamlcodegen[type].replace('{language}', language).replace('localhost', $location.host());
} else {
url = defaults.codegen[type].replace('{language}', language);
}

return new Promise(function (rsolve, reject) {

if(Preferences.get('simpleYAML')){

return new Promise(function(rsolve, reject) {
Storage.load('yaml').then(function(yaml) {
YAML.load(yaml, function(error, spec) {
if (error) {
return reject(error);
$http.post(url, language==='csharp'?simpleYaml.model:{spec: simpleYaml.swagger}).then(function redirect(resp) {
if (angular.isObject(resp.data) && resp.data.link) {
window.location = resp.data.link;
rsolve();
} else {
reject('Bad response from server: ' + JSON.stringify(resp));
}
$http.post(url, {spec: spec}).then(function redirect(resp) {
if (angular.isObject(resp.data) && resp.data.link) {
window.location = resp.data.link;
rsolve();
} else {
reject('Bad response from server: ' + JSON.stringify(resp));
}, reject);

} else {
Storage.load('yaml').then(function (yaml) {
YAML.load(yaml, function (error, spec) {
if (error) {
return reject(error);
}
}, reject);
$http.post(url, {spec: spec}).then(function redirect(resp) {
if (angular.isObject(resp.data) && resp.data.link) {
window.location = resp.data.link;
rsolve();
} else {
reject('Bad response from server: ' + JSON.stringify(resp));
}
}, reject);
});
});
});
}

});
};
});

0 comments on commit e003656

Please sign in to comment.