From ee4b180729e0f92cbab22f6574cac7faf73841a7 Mon Sep 17 00:00:00 2001 From: marla-singer Date: Thu, 18 Aug 2016 16:05:21 +0300 Subject: [PATCH 1/9] integrate sdk generator: add modal form, add button, add list of popular list --- .../codegenerator/client/codegenerator.html | 23 ++++ .../codegenerator/client/codegenerator.js | 103 ++++++++++++++++++ documentation/collection/collection.js | 19 +++- documentation/view/client/documentation.css | 4 + documentation/view/client/documentation.html | 25 +++-- documentation/view/client/documentation.js | 6 + lib/i18n/en.i18n.json | 3 + 7 files changed, 175 insertions(+), 8 deletions(-) create mode 100644 documentation/codegenerator/client/codegenerator.html create mode 100644 documentation/codegenerator/client/codegenerator.js diff --git a/documentation/codegenerator/client/codegenerator.html b/documentation/codegenerator/client/codegenerator.html new file mode 100644 index 0000000000..caeda36ea0 --- /dev/null +++ b/documentation/codegenerator/client/codegenerator.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/documentation/codegenerator/client/codegenerator.js b/documentation/codegenerator/client/codegenerator.js new file mode 100644 index 0000000000..2963ac529e --- /dev/null +++ b/documentation/codegenerator/client/codegenerator.js @@ -0,0 +1,103 @@ +import { HTTP } from 'meteor/http'; +import { LanguageParams, LanguageList, DocumentationFiles } from '/documentation/collection/collection'; +import { ApiBackends } from '/apis/collection/backend'; + +Template.sdkCodeGeneratorModal.onCreated(function () { + const instance = this; + + instance.autorun(function () { + const apiBackend = ApiBackends.findOne(instance.data.apiBackend._id); + // Save apibackend id + Session.set('currentApiBackend', apiBackend); + + // Get documentation file id + const documentationFileId = instance.data.apiBackend.documentationFileId; + + // Get documentation file URL + const documentationFileURL = Meteor.absoluteUrl().slice(0, -1) + DocumentationFiles.baseURL + '/id/' + documentationFileId; + + // Save documentation file URL + Session.set('currentDocumentationFileURL', documentationFileURL); + }); +}); + +Template.sdkCodeGeneratorModal.onDestroyed(function () { + // Unset session + Session.set('currentApiBackend', undefined); + Session.set('currentDocumentationFileURL', undefined); +}); + +Template.sdkCodeGeneratorModal.helpers({ + // Schema for SDK Code Generator form + generateSDK: function () { + var sdkSchema = new SimpleSchema({ + selectLanguage: { + type: String, + allowedValues: LanguageList, + autoform: { + afFieldInput: { + firstOption: '(Language)' + } + } + } + }); + return sdkSchema; + } +}); + +AutoForm.addHooks('downloadSDK', { + onSubmit: function (formValues) { + // Prevent form from submitting + this.event.preventDefault(); + + // Get selected language from dropdown + const selectedLanguage = formValues.selectLanguage; + + // Create parameter for URL on depecing selected language + // Check on specific language name + let languageHashName = LanguageParams[selectedLanguage]; + + if (_.isUndefined(languageHashName)) { + // Use standart method for creating parameter + languageHashName = selectedLanguage.toLowerCase(); + languageHashName = languageHashName.replace(/\s+/g, '-'); + } + + // Create URL to send request + const url = 'https://generator.swagger.io/api/gen/clients/' + languageHashName; + + // Get path to documentation file + const pathToFile = Session.get('currentDocumentationFileURL'); + + // Create POST options + const options = { + 'swaggerUrl': pathToFile + }; + + // Send POST request + HTTP.post(url, { data: options }, function (error, result) { + // Get information from Swagger API response + let response = JSON.parse(result.content); + + if (result.statusCode === 200) { + // Hide modal + Modal.hide('sdkCodeGeneratorModal'); + + // Go to link and download file + window.location.href = response.link; + } else { + $('button').removeAttr('disabled'); + + // Otherwise show an error message + FlashMessages.sendError(response.message); + } + }); + } +}); + +FlashMessages.configure({ + // Configuration for FlashMessages. + autoHide: true, + hideDelay: 5000, + autoScroll: false +}); diff --git a/documentation/collection/collection.js b/documentation/collection/collection.js index 94b6a3ce9f..21c472b28a 100644 --- a/documentation/collection/collection.js +++ b/documentation/collection/collection.js @@ -14,4 +14,21 @@ const DocumentationFiles = new FileCollection('DocumentationFiles', { ] }); -export { DocumentationFiles }; +// List of popular language for SDK Code Generator +const LanguageList = ['Akka Scala', 'Android', 'Async Scala', + 'Clojure', 'Cpprest', 'C#', 'C# .NET 2.0', 'Cwiki', + 'Dart', 'Dynamic HTML', 'Flash', 'Go', 'Groovy', + 'HTML', 'Html2', 'Java', 'Javascript', 'Javascript Closure Angular', 'Jmeter', + 'Objective-C', 'Perl', 'PHP', 'Python', 'Qt 5 C++', 'Ruby', + 'Scala', 'Swagger JSON', 'Swagger YAML', 'Swift', + 'Tizen', 'Typescript Angular', 'Typescript Angular2', 'Typescript Fetch', 'Typescript Node']; + +// Interpretation some languages to parameter for creating URL +const LanguageParams = { + "C#": "csharp", + "C# .NET 2.0": "CsharpDotNet2", + "Objective-C": "objc", + "Qt 5 C++": "qt5cpp", + "Swagger JSON": "swagger" + } +export { DocumentationFiles, LanguageList, LanguageParams }; diff --git a/documentation/view/client/documentation.css b/documentation/view/client/documentation.css index 386f9aa862..017279873e 100644 --- a/documentation/view/client/documentation.css +++ b/documentation/view/client/documentation.css @@ -12,3 +12,7 @@ iframe { .s-alert-box { z-index: 10000 } + +button#sdk-code-generator { + margin-right: 10px +} diff --git a/documentation/view/client/documentation.html b/documentation/view/client/documentation.html index ab404a3898..5c0b436e92 100644 --- a/documentation/view/client/documentation.html +++ b/documentation/view/client/documentation.html @@ -2,13 +2,24 @@
{{#if apiBackend.currentUserCanEdit }} - - {{/if}} + + {{/if}} + + {{#if documentationExists }} + + {{/if}} +

{{_ "documentation_Title" }}

diff --git a/documentation/view/client/documentation.js b/documentation/view/client/documentation.js index 183b8d2a46..8550ecd9e3 100644 --- a/documentation/view/client/documentation.js +++ b/documentation/view/client/documentation.js @@ -62,5 +62,11 @@ Template.documentation.events({ const apiBackend = instance.data.apiBackend // Show the manage API documentation form Modal.show('manageApiDocumentationModal', { apiBackend }) + }, + 'click #sdk-code-generator' (event, instance) { + // Get reference to API backend + const apiBackend = instance.data.apiBackend; + // Show the SDK Code generator form + Modal.show('sdkCodeGeneratorModal', { apiBackend }); } }); diff --git a/lib/i18n/en.i18n.json b/lib/i18n/en.i18n.json index cfac4a23e5..f1a07b6de1 100644 --- a/lib/i18n/en.i18n.json +++ b/lib/i18n/en.i18n.json @@ -121,6 +121,8 @@ "documentation_No_Swagger_Message": "No swagger document is available.", "documentation_Title": "Documentation", "documentation_Viewer_Title": "Viewer", + "documentation_sdkGenerateButton": "SDK Generate", + "documentation_tooltipSDKGeneratorButton": "With a valid swagger file, you can download an SDK of your preferred language using this wizard", "editApiBackendForm-uploadLogo": "Upload logo", "editApiMetadata_editApiMetadataForm_button": "Edit API Metadata", "editApiMetadata_editApiMetadataForm_title": "Edit API Metadata", @@ -348,6 +350,7 @@ } } }, + "sdkCodeGeneratorModal_Title": "Generate SDK file", "searchField_button": "Search", "searchField_placeholder": "Search...", "searchPage_addedPrefix": "Added", From 6e26cbda0682b0188095efb509866f50f538bce6 Mon Sep 17 00:00:00 2001 From: marla-singer Date: Mon, 22 Aug 2016 14:45:13 +0300 Subject: [PATCH 2/9] add spinner --- .../codegenerator/client/codegenerator.html | 6 ++- .../codegenerator/client/codegenerator.js | 37 +++++++++++++++---- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/documentation/codegenerator/client/codegenerator.html b/documentation/codegenerator/client/codegenerator.html index caeda36ea0..e6ea651ffd 100644 --- a/documentation/codegenerator/client/codegenerator.html +++ b/documentation/codegenerator/client/codegenerator.html @@ -14,7 +14,11 @@

{{> quickForm id="downloadSDK" schema=generateSDK - buttonContent="Download" }} + buttonContent="Download" + doc=getCallRequest }} + {{#if statusRequest}} + {{> spinner}} + {{/if}}

{{> flashMessages}}
diff --git a/documentation/codegenerator/client/codegenerator.js b/documentation/codegenerator/client/codegenerator.js index 2963ac529e..ae74b1798e 100644 --- a/documentation/codegenerator/client/codegenerator.js +++ b/documentation/codegenerator/client/codegenerator.js @@ -1,15 +1,16 @@ +import { Template } from 'meteor/templating'; +import { ReactiveVar } from 'meteor/reactive-var'; +import { Session } from 'meteor/session'; import { HTTP } from 'meteor/http'; + import { LanguageParams, LanguageList, DocumentationFiles } from '/documentation/collection/collection'; -import { ApiBackends } from '/apis/collection/backend'; Template.sdkCodeGeneratorModal.onCreated(function () { const instance = this; - instance.autorun(function () { - const apiBackend = ApiBackends.findOne(instance.data.apiBackend._id); - // Save apibackend id - Session.set('currentApiBackend', apiBackend); + instance.callRequest = new ReactiveVar(false); + instance.autorun(function () { // Get documentation file id const documentationFileId = instance.data.apiBackend.documentationFileId; @@ -23,13 +24,12 @@ Template.sdkCodeGeneratorModal.onCreated(function () { Template.sdkCodeGeneratorModal.onDestroyed(function () { // Unset session - Session.set('currentApiBackend', undefined); Session.set('currentDocumentationFileURL', undefined); }); Template.sdkCodeGeneratorModal.helpers({ // Schema for SDK Code Generator form - generateSDK: function () { + generateSDK () { var sdkSchema = new SimpleSchema({ selectLanguage: { type: String, @@ -42,11 +42,27 @@ Template.sdkCodeGeneratorModal.helpers({ } }); return sdkSchema; + }, + + // Give variable callRequest to template + statusRequest () { + // Get reference to template instance + const instance = Template.instance(); + + return instance.callRequest.get(); + }, + // Give variable callRequest to autoform as a parameter + getCallRequest () { + // Get reference to template instance + const instance = Template.instance(); + + return instance.callRequest; } + }); AutoForm.addHooks('downloadSDK', { - onSubmit: function (formValues) { + onSubmit: function (formValues, updateDoc, callRequest) { // Prevent form from submitting this.event.preventDefault(); @@ -74,6 +90,9 @@ AutoForm.addHooks('downloadSDK', { 'swaggerUrl': pathToFile }; + // Start spinner when send request + callRequest.set(true); + // Send POST request HTTP.post(url, { data: options }, function (error, result) { // Get information from Swagger API response @@ -91,6 +110,8 @@ AutoForm.addHooks('downloadSDK', { // Otherwise show an error message FlashMessages.sendError(response.message); } + // Finish spinner + callRequest.set(false); }); } }); From 87c5d3eec1a61a6ddf2bea9b2743e356be7edea8 Mon Sep 17 00:00:00 2001 From: marla-singer Date: Tue, 23 Aug 2016 13:30:04 +0300 Subject: [PATCH 3/9] change in css file px to em --- documentation/view/client/documentation.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/view/client/documentation.css b/documentation/view/client/documentation.css index 017279873e..26e8d667f5 100644 --- a/documentation/view/client/documentation.css +++ b/documentation/view/client/documentation.css @@ -14,5 +14,5 @@ iframe { } button#sdk-code-generator { - margin-right: 10px + margin-right: 1em } From 09bebbd18292f88e88e74dde3c656af9a6d65ddc Mon Sep 17 00:00:00 2001 From: marla-singer Date: Tue, 23 Aug 2016 13:32:44 +0300 Subject: [PATCH 4/9] add i18n token for button Manage --- documentation/view/client/documentation.html | 2 +- lib/i18n/en.i18n.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/documentation/view/client/documentation.html b/documentation/view/client/documentation.html index 5c0b436e92..795d17a77b 100644 --- a/documentation/view/client/documentation.html +++ b/documentation/view/client/documentation.html @@ -6,7 +6,7 @@ id="manage-api-documentation" class="btn btn-xs btn-info pull-right">   - Manage + {{_ "documentation_manageDocumentation_buttonText" }} {{/if}} diff --git a/lib/i18n/en.i18n.json b/lib/i18n/en.i18n.json index f1a07b6de1..61e3f89d7c 100644 --- a/lib/i18n/en.i18n.json +++ b/lib/i18n/en.i18n.json @@ -115,6 +115,7 @@ "documentation_APICall_Warning_Message": "API calls (PUT, POST, or DELETE) from Swagger are real calls.", "documentation_APICall_Warning_Title": "Warning!", "documentation_Link_Title": "Link", + "documentation_manageDocumentation_buttonText": "Manage", "documentation_No_Link_Manager_Message": "You can add one using Manage API feature.", "documentation_No_Link_Message": "No documentation link is available.", "documentation_No_Swagger_Manager_Message": "You can add one using Manage API feature.", From 53519b32b7f37f60e56cbec9c84a563e4bb5e9a4 Mon Sep 17 00:00:00 2001 From: marla-singer Date: Tue, 23 Aug 2016 13:47:21 +0300 Subject: [PATCH 5/9] remove flashMessages configuration in local js file --- documentation/codegenerator/client/codegenerator.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/documentation/codegenerator/client/codegenerator.js b/documentation/codegenerator/client/codegenerator.js index ae74b1798e..3901c79042 100644 --- a/documentation/codegenerator/client/codegenerator.js +++ b/documentation/codegenerator/client/codegenerator.js @@ -115,10 +115,3 @@ AutoForm.addHooks('downloadSDK', { }); } }); - -FlashMessages.configure({ - // Configuration for FlashMessages. - autoHide: true, - hideDelay: 5000, - autoScroll: false -}); From 7051793e4dd4489bc79fb6c6bdff40631e285f19 Mon Sep 17 00:00:00 2001 From: marla-singer Date: Tue, 23 Aug 2016 13:49:15 +0300 Subject: [PATCH 6/9] move autoForm hook to its own file implement dynamicall list and add friendly name --- .../codegenerator/client/autoform.js | 52 ++++++++++++++ .../codegenerator/client/codegenerator.html | 5 +- .../codegenerator/client/codegenerator.js | 62 +--------------- documentation/collection/collection.js | 70 ++++++++++++++----- lib/i18n/en.i18n.json | 1 + 5 files changed, 110 insertions(+), 80 deletions(-) create mode 100644 documentation/codegenerator/client/autoform.js diff --git a/documentation/codegenerator/client/autoform.js b/documentation/codegenerator/client/autoform.js new file mode 100644 index 0000000000..411989904b --- /dev/null +++ b/documentation/codegenerator/client/autoform.js @@ -0,0 +1,52 @@ +import { HTTP } from 'meteor/http'; + +AutoForm.addHooks('downloadSDK', { + onSubmit: function (formValues, updateDoc, callRequest) { + // Prevent form from submitting + this.event.preventDefault(); + + // Get selected language from dropdown list + const selectedLanguage = formValues.selectLanguage; + + // Get index of selected language in global list of languages + const index = _.indexOf(LanguageList, selectedLanguage); + + // Find mask of the language for url + const parameter = urlParameters[index]; + + // Create URL to send request + const url = 'https://generator.swagger.io/api/gen/clients/' + parameter; + + // Get path to documentation file + const pathToFile = Session.get('currentDocumentationFileURL'); + + // Create POST options + const options = { + 'swaggerUrl': pathToFile + }; + + // Start spinner when send request + callRequest.set(true); + + // Send POST request + HTTP.post(url, { data: options }, function (error, result) { + // Get information from Swagger API response + let response = JSON.parse(result.content); + + if (result.statusCode === 200) { + // Hide modal + Modal.hide('sdkCodeGeneratorModal'); + + // Go to link and download file + window.location.href = response.link; + } else { + $('button').removeAttr('disabled'); + + // Otherwise show an error message + FlashMessages.sendError(TAPi18n.__('sdkCodeGeneratorModal_errorText')); + } + // Finish spinner + callRequest.set(false); + }); + } +}); diff --git a/documentation/codegenerator/client/codegenerator.html b/documentation/codegenerator/client/codegenerator.html index e6ea651ffd..31fe9e5388 100644 --- a/documentation/codegenerator/client/codegenerator.html +++ b/documentation/codegenerator/client/codegenerator.html @@ -14,8 +14,9 @@

{{> quickForm id="downloadSDK" schema=generateSDK - buttonContent="Download" - doc=getCallRequest }} + doc=getCallRequest + buttonContent="Download" }} + {{#if statusRequest}} {{> spinner}} {{/if}} diff --git a/documentation/codegenerator/client/codegenerator.js b/documentation/codegenerator/client/codegenerator.js index 3901c79042..d24bfabb67 100644 --- a/documentation/codegenerator/client/codegenerator.js +++ b/documentation/codegenerator/client/codegenerator.js @@ -1,9 +1,8 @@ import { Template } from 'meteor/templating'; import { ReactiveVar } from 'meteor/reactive-var'; import { Session } from 'meteor/session'; -import { HTTP } from 'meteor/http'; -import { LanguageParams, LanguageList, DocumentationFiles } from '/documentation/collection/collection'; +import { DocumentationFiles } from '/documentation/collection/collection'; Template.sdkCodeGeneratorModal.onCreated(function () { const instance = this; @@ -30,7 +29,7 @@ Template.sdkCodeGeneratorModal.onDestroyed(function () { Template.sdkCodeGeneratorModal.helpers({ // Schema for SDK Code Generator form generateSDK () { - var sdkSchema = new SimpleSchema({ + const sdkSchema = new SimpleSchema({ selectLanguage: { type: String, allowedValues: LanguageList, @@ -43,7 +42,6 @@ Template.sdkCodeGeneratorModal.helpers({ }); return sdkSchema; }, - // Give variable callRequest to template statusRequest () { // Get reference to template instance @@ -58,60 +56,4 @@ Template.sdkCodeGeneratorModal.helpers({ return instance.callRequest; } - -}); - -AutoForm.addHooks('downloadSDK', { - onSubmit: function (formValues, updateDoc, callRequest) { - // Prevent form from submitting - this.event.preventDefault(); - - // Get selected language from dropdown - const selectedLanguage = formValues.selectLanguage; - - // Create parameter for URL on depecing selected language - // Check on specific language name - let languageHashName = LanguageParams[selectedLanguage]; - - if (_.isUndefined(languageHashName)) { - // Use standart method for creating parameter - languageHashName = selectedLanguage.toLowerCase(); - languageHashName = languageHashName.replace(/\s+/g, '-'); - } - - // Create URL to send request - const url = 'https://generator.swagger.io/api/gen/clients/' + languageHashName; - - // Get path to documentation file - const pathToFile = Session.get('currentDocumentationFileURL'); - - // Create POST options - const options = { - 'swaggerUrl': pathToFile - }; - - // Start spinner when send request - callRequest.set(true); - - // Send POST request - HTTP.post(url, { data: options }, function (error, result) { - // Get information from Swagger API response - let response = JSON.parse(result.content); - - if (result.statusCode === 200) { - // Hide modal - Modal.hide('sdkCodeGeneratorModal'); - - // Go to link and download file - window.location.href = response.link; - } else { - $('button').removeAttr('disabled'); - - // Otherwise show an error message - FlashMessages.sendError(response.message); - } - // Finish spinner - callRequest.set(false); - }); - } }); diff --git a/documentation/collection/collection.js b/documentation/collection/collection.js index 21c472b28a..345eb97df4 100644 --- a/documentation/collection/collection.js +++ b/documentation/collection/collection.js @@ -1,3 +1,5 @@ +import _ from 'lodash'; + const DocumentationFiles = new FileCollection('DocumentationFiles', { resumable: true, resumableIndexName: 'documentation', @@ -5,7 +7,7 @@ const DocumentationFiles = new FileCollection('DocumentationFiles', { { method: 'get', path: '/id/:_id', - lookup: function(params, query) { + lookup: function (params, query) { return { _id: params._id }; @@ -14,21 +16,53 @@ const DocumentationFiles = new FileCollection('DocumentationFiles', { ] }); -// List of popular language for SDK Code Generator -const LanguageList = ['Akka Scala', 'Android', 'Async Scala', - 'Clojure', 'Cpprest', 'C#', 'C# .NET 2.0', 'Cwiki', - 'Dart', 'Dynamic HTML', 'Flash', 'Go', 'Groovy', - 'HTML', 'Html2', 'Java', 'Javascript', 'Javascript Closure Angular', 'Jmeter', - 'Objective-C', 'Perl', 'PHP', 'Python', 'Qt 5 C++', 'Ruby', - 'Scala', 'Swagger JSON', 'Swagger YAML', 'Swift', - 'Tizen', 'Typescript Angular', 'Typescript Angular2', 'Typescript Fetch', 'Typescript Node']; - -// Interpretation some languages to parameter for creating URL -const LanguageParams = { - "C#": "csharp", - "C# .NET 2.0": "CsharpDotNet2", - "Objective-C": "objc", - "Qt 5 C++": "qt5cpp", - "Swagger JSON": "swagger" +export { DocumentationFiles }; + +// The most part of list items can convert to user friendly name by standard method +// The method is to replace dash on space and to do the capital letter of each word +// Some language names can't be convert by standard method. +// Variable 'languageHashName' keeps specific names +const languageHashName = { + 'dynamic-html': 'Dynamic HTML', + 'csharp': 'C#', + 'CsharpDotNet2': 'C# .NET 2.0', + 'html': 'HTML', + 'objc': 'Objective-C', + 'php': 'PHP', + 'qt5cpp': 'Qt 5 C++', + 'swagger': 'Swagger JSON', + 'swagger-yaml': 'Swagger YAML' +}; + +// Codegen server url +const url = 'https://generator.swagger.io/api/gen/clients'; + +// Get list of an available languages from Codegen server +HTTP.get(url, {}, function (error, result) { + // Get information from Swagger API response + const response = JSON.parse(result.content); + + // Save response to use it like url parameter in POST request + urlParameters = response; + + // Create list of friendly language names + LanguageList = []; + + _.forEach(response, function (language) { + // Check on specific name + let newLanguageName = languageHashName[language]; + + // Convert name by standard method if it isn't specific name + if (_.isUndefined(newLanguageName)) { + // Split the name into words, ex. 'akka-scala' -> 'akka','scala' + let newLanguageList = language.split('-'); + // Do the capital letter for each word + newLanguageList = _.map(newLanguageList, function (word) { return _.capitalize(word); }); + // Join this list to string using space + newLanguageName = newLanguageList.join(' '); } -export { DocumentationFiles, LanguageList, LanguageParams }; + + // Add new name to list of languages which show to user + LanguageList.push(newLanguageName); + }); +}); diff --git a/lib/i18n/en.i18n.json b/lib/i18n/en.i18n.json index 61e3f89d7c..539cbf5346 100644 --- a/lib/i18n/en.i18n.json +++ b/lib/i18n/en.i18n.json @@ -351,6 +351,7 @@ } } }, + "sdkCodeGeneratorModal_errorText": "Your file is not supported by the generator. Please upload the correct file", "sdkCodeGeneratorModal_Title": "Generate SDK file", "searchField_button": "Search", "searchField_placeholder": "Search...", From c415cf90362b91ad1418b00fb7bdf20576f9be47 Mon Sep 17 00:00:00 2001 From: marla-singer Date: Fri, 26 Aug 2016 10:23:23 +0300 Subject: [PATCH 7/9] change architecture, remove global variables from collection.js --- .../codegenerator/client/autoform.js | 16 ++-- .../codegenerator/client/codegenerator.html | 16 ++-- .../codegenerator/client/codegenerator.js | 89 +++++++++++++++---- documentation/collection/collection.js | 36 +------- 4 files changed, 93 insertions(+), 64 deletions(-) diff --git a/documentation/codegenerator/client/autoform.js b/documentation/codegenerator/client/autoform.js index 411989904b..ee6af08a1a 100644 --- a/documentation/codegenerator/client/autoform.js +++ b/documentation/codegenerator/client/autoform.js @@ -1,7 +1,7 @@ import { HTTP } from 'meteor/http'; AutoForm.addHooks('downloadSDK', { - onSubmit: function (formValues, updateDoc, callRequest) { + onSubmit: function (formValues, updateDoc, instance) { // Prevent form from submitting this.event.preventDefault(); @@ -9,16 +9,18 @@ AutoForm.addHooks('downloadSDK', { const selectedLanguage = formValues.selectLanguage; // Get index of selected language in global list of languages - const index = _.indexOf(LanguageList, selectedLanguage); + const index = _.indexOf(instance.languageList, selectedLanguage); // Find mask of the language for url - const parameter = urlParameters[index]; + const parameter = instance.urlParameters[index]; + + const host = 'https://generator.swagger.io'; // Create URL to send request - const url = 'https://generator.swagger.io/api/gen/clients/' + parameter; + const url = host + '/api/gen/clients/' + parameter; // Get path to documentation file - const pathToFile = Session.get('currentDocumentationFileURL'); + const pathToFile = instance.documentationFileURL; // Create POST options const options = { @@ -26,7 +28,7 @@ AutoForm.addHooks('downloadSDK', { }; // Start spinner when send request - callRequest.set(true); + instance.callRequest.set(true); // Send POST request HTTP.post(url, { data: options }, function (error, result) { @@ -46,7 +48,7 @@ AutoForm.addHooks('downloadSDK', { FlashMessages.sendError(TAPi18n.__('sdkCodeGeneratorModal_errorText')); } // Finish spinner - callRequest.set(false); + instance.callRequest.set(false); }); } }); diff --git a/documentation/codegenerator/client/codegenerator.html b/documentation/codegenerator/client/codegenerator.html index 31fe9e5388..b92092807c 100644 --- a/documentation/codegenerator/client/codegenerator.html +++ b/documentation/codegenerator/client/codegenerator.html @@ -11,11 +11,17 @@