From e003656a2a6fef25046d2f68d04df0ac4b9fd8bb Mon Sep 17 00:00:00 2001 From: Luqiang Tian Date: Wed, 30 Mar 2016 16:08:57 +0800 Subject: [PATCH] Add codegen link for simple YAML --- app/scripts/enums/simpleYaml.js | 5 +++ config/defaults.json | 4 +++ scripts/services/builder.js | 11 +++++-- scripts/services/codegen.js | 56 +++++++++++++++++++++++---------- 4 files changed, 56 insertions(+), 20 deletions(-) create mode 100644 app/scripts/enums/simpleYaml.js diff --git a/app/scripts/enums/simpleYaml.js b/app/scripts/enums/simpleYaml.js new file mode 100644 index 00000000000..cce5936a21e --- /dev/null +++ b/app/scripts/enums/simpleYaml.js @@ -0,0 +1,5 @@ +'use strict'; + +SwaggerEditor.config(function ($provide) { + $provide.value('simpleYaml', {model:'', swagger:''}); +}); diff --git a/config/defaults.json b/config/defaults.json index f17c1c8a84f..69e98c0d90d 100644 --- a/config/defaults.json +++ b/config/defaults.json @@ -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" diff --git a/scripts/services/builder.js b/scripts/services/builder.js index 4b66d9ba2b0..c04f82d1af4 100644 --- a/scripts/services/builder.js +++ b/scripts/services/builder.js @@ -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); /* @@ -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}; @@ -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();} }); diff --git a/scripts/services/codegen.js b/scripts/services/codegen.js index 4a8abb6aa93..acb394cbe5c 100644 --- a/scripts/services/codegen.js +++ b/scripts/services/codegen.js @@ -5,7 +5,7 @@ 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) { @@ -13,7 +13,8 @@ SwaggerEditor.service('Codegen', function Codegen($http, defaults, Storage, 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; }); }; @@ -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); + }); }); - }); + } + }); }; });