Add multiple servers support to JS API client (#1974)

* add multiple servers support to JS ES6

* multiple server support in js es5

* using exports in es5

* fix index check

* add oas v3 js es6 client to travis
This commit is contained in:
William Cheng
2019-01-29 11:19:21 +08:00
committed by GitHub
parent 046db19a85
commit 83d34bd8d7
222 changed files with 24380 additions and 6 deletions

View File

@@ -536,6 +536,46 @@ class ApiClient {
}
}
/**
* Gets an array of host settings
* @returns An array of host settings
*/
hostSettings() {
return [
{
'url': "http://petstore.swagger.io:80/v2",
'description': "No description provided",
}
];
}
getBasePathFromSettings(index, variables={}) {
var servers = this.hostSettings();
// check array index out of bound
if (index < 0 || index >= servers.length) {
throw new Error("Invalid index " + index + " when selecting the host settings. Must be less than " + servers.length);
}
var server = servers[index];
var url = server['url'];
// go through variable and assign a value
for (var variable_name in server['variables']) {
if (variable_name in variables) {
if (server['variables'][variable_name]['enum_values'].includes(variables[variable_name])) {
url = url.replace("{" + variable_name + "}", variables[variable_name]);
} else {
throw new Error("The variable `" + variable_name + "` in the host URL has invalid value " + variables[variable_name] + ". Must be " + server['variables'][variable_name]['enum_values'] + ".");
}
} else {
// use default value
url = url.replace("{" + variable_name + "}", server['variables'][variable_name]['default_value'])
}
}
return url;
}
/**
* Constructs a new map or array model from REST data.
* @param data {Object|Array} The REST data.

View File

@@ -46,6 +46,8 @@ import Pet from './model/Pet';
import ReadOnlyFirst from './model/ReadOnlyFirst';
import SpecialModelName from './model/SpecialModelName';
import Tag from './model/Tag';
import TypeHolderDefault from './model/TypeHolderDefault';
import TypeHolderExample from './model/TypeHolderExample';
import User from './model/User';
import AnotherFakeApi from './api/AnotherFakeApi';
import FakeApi from './api/FakeApi';
@@ -291,6 +293,18 @@ export {
*/
Tag,
/**
* The TypeHolderDefault model constructor.
* @property {module:model/TypeHolderDefault}
*/
TypeHolderDefault,
/**
* The TypeHolderExample model constructor.
* @property {module:model/TypeHolderExample}
*/
TypeHolderExample,
/**
* The User model constructor.
* @property {module:model/User}

View File

@@ -0,0 +1,115 @@
/**
* OpenAPI Petstore
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*
*/
import ApiClient from '../ApiClient';
/**
* The TypeHolderDefault model module.
* @module model/TypeHolderDefault
* @version 1.0.0
*/
class TypeHolderDefault {
/**
* Constructs a new <code>TypeHolderDefault</code>.
* @alias module:model/TypeHolderDefault
* @param stringItem {String}
* @param numberItem {Number}
* @param integerItem {Number}
* @param boolItem {Boolean}
* @param arrayItem {Array.<Number>}
*/
constructor(stringItem, numberItem, integerItem, boolItem, arrayItem) {
TypeHolderDefault.initialize(this, stringItem, numberItem, integerItem, boolItem, arrayItem);
}
/**
* Initializes the fields of this object.
* This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
* Only for internal use.
*/
static initialize(obj, stringItem, numberItem, integerItem, boolItem, arrayItem) {
obj['string_item'] = stringItem;
obj['number_item'] = numberItem;
obj['integer_item'] = integerItem;
obj['bool_item'] = boolItem;
obj['array_item'] = arrayItem;
}
/**
* Constructs a <code>TypeHolderDefault</code> from a plain JavaScript object, optionally creating a new instance.
* Copies all relevant properties from <code>data</code> to <code>obj</code> if supplied or a new instance if not.
* @param {Object} data The plain JavaScript object bearing properties of interest.
* @param {module:model/TypeHolderDefault} obj Optional instance to populate.
* @return {module:model/TypeHolderDefault} The populated <code>TypeHolderDefault</code> instance.
*/
static constructFromObject(data, obj) {
if (data) {
obj = obj || new TypeHolderDefault();
if (data.hasOwnProperty('string_item')) {
obj['string_item'] = ApiClient.convertToType(data['string_item'], 'String');
}
if (data.hasOwnProperty('number_item')) {
obj['number_item'] = ApiClient.convertToType(data['number_item'], 'Number');
}
if (data.hasOwnProperty('integer_item')) {
obj['integer_item'] = ApiClient.convertToType(data['integer_item'], 'Number');
}
if (data.hasOwnProperty('bool_item')) {
obj['bool_item'] = ApiClient.convertToType(data['bool_item'], 'Boolean');
}
if (data.hasOwnProperty('array_item')) {
obj['array_item'] = ApiClient.convertToType(data['array_item'], ['Number']);
}
}
return obj;
}
}
/**
* @member {String} string_item
* @default 'what'
*/
TypeHolderDefault.prototype['string_item'] = 'what';
/**
* @member {Number} number_item
*/
TypeHolderDefault.prototype['number_item'] = undefined;
/**
* @member {Number} integer_item
*/
TypeHolderDefault.prototype['integer_item'] = undefined;
/**
* @member {Boolean} bool_item
* @default true
*/
TypeHolderDefault.prototype['bool_item'] = true;
/**
* @member {Array.<Number>} array_item
*/
TypeHolderDefault.prototype['array_item'] = undefined;
export default TypeHolderDefault;

View File

@@ -0,0 +1,113 @@
/**
* OpenAPI Petstore
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*
*/
import ApiClient from '../ApiClient';
/**
* The TypeHolderExample model module.
* @module model/TypeHolderExample
* @version 1.0.0
*/
class TypeHolderExample {
/**
* Constructs a new <code>TypeHolderExample</code>.
* @alias module:model/TypeHolderExample
* @param stringItem {String}
* @param numberItem {Number}
* @param integerItem {Number}
* @param boolItem {Boolean}
* @param arrayItem {Array.<Number>}
*/
constructor(stringItem, numberItem, integerItem, boolItem, arrayItem) {
TypeHolderExample.initialize(this, stringItem, numberItem, integerItem, boolItem, arrayItem);
}
/**
* Initializes the fields of this object.
* This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
* Only for internal use.
*/
static initialize(obj, stringItem, numberItem, integerItem, boolItem, arrayItem) {
obj['string_item'] = stringItem;
obj['number_item'] = numberItem;
obj['integer_item'] = integerItem;
obj['bool_item'] = boolItem;
obj['array_item'] = arrayItem;
}
/**
* Constructs a <code>TypeHolderExample</code> from a plain JavaScript object, optionally creating a new instance.
* Copies all relevant properties from <code>data</code> to <code>obj</code> if supplied or a new instance if not.
* @param {Object} data The plain JavaScript object bearing properties of interest.
* @param {module:model/TypeHolderExample} obj Optional instance to populate.
* @return {module:model/TypeHolderExample} The populated <code>TypeHolderExample</code> instance.
*/
static constructFromObject(data, obj) {
if (data) {
obj = obj || new TypeHolderExample();
if (data.hasOwnProperty('string_item')) {
obj['string_item'] = ApiClient.convertToType(data['string_item'], 'String');
}
if (data.hasOwnProperty('number_item')) {
obj['number_item'] = ApiClient.convertToType(data['number_item'], 'Number');
}
if (data.hasOwnProperty('integer_item')) {
obj['integer_item'] = ApiClient.convertToType(data['integer_item'], 'Number');
}
if (data.hasOwnProperty('bool_item')) {
obj['bool_item'] = ApiClient.convertToType(data['bool_item'], 'Boolean');
}
if (data.hasOwnProperty('array_item')) {
obj['array_item'] = ApiClient.convertToType(data['array_item'], ['Number']);
}
}
return obj;
}
}
/**
* @member {String} string_item
*/
TypeHolderExample.prototype['string_item'] = undefined;
/**
* @member {Number} number_item
*/
TypeHolderExample.prototype['number_item'] = undefined;
/**
* @member {Number} integer_item
*/
TypeHolderExample.prototype['integer_item'] = undefined;
/**
* @member {Boolean} bool_item
*/
TypeHolderExample.prototype['bool_item'] = undefined;
/**
* @member {Array.<Number>} array_item
*/
TypeHolderExample.prototype['array_item'] = undefined;
export default TypeHolderExample;