Binary support for javascript client (#5194)

This commit is contained in:
Julien Dupouy
2017-03-26 16:53:35 +02:00
committed by wing328
parent a9c7030997
commit e50e653e3d
16 changed files with 62 additions and 43 deletions

View File

@@ -22,6 +22,7 @@ import io.swagger.models.Operation;
import io.swagger.models.Swagger; import io.swagger.models.Swagger;
import io.swagger.models.properties.ArrayProperty; import io.swagger.models.properties.ArrayProperty;
import io.swagger.models.properties.BooleanProperty; import io.swagger.models.properties.BooleanProperty;
import io.swagger.models.properties.ByteArrayProperty;
import io.swagger.models.properties.DateProperty; import io.swagger.models.properties.DateProperty;
import io.swagger.models.properties.DateTimeProperty; import io.swagger.models.properties.DateTimeProperty;
import io.swagger.models.properties.DoubleProperty; import io.swagger.models.properties.DoubleProperty;
@@ -113,7 +114,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
); );
languageSpecificPrimitives = new HashSet<String>( languageSpecificPrimitives = new HashSet<String>(
Arrays.asList("String", "Boolean", "Number", "Array", "Object", "Date", "File") Arrays.asList("String", "Boolean", "Number", "Array", "Object", "Date", "File", "Blob")
); );
defaultIncludes = new HashSet<String>(languageSpecificPrimitives); defaultIncludes = new HashSet<String>(languageSpecificPrimitives);
@@ -138,8 +139,8 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
typeMapping.put("object", "Object"); typeMapping.put("object", "Object");
typeMapping.put("integer", "Number"); typeMapping.put("integer", "Number");
// binary not supported in JavaScript client right now, using String as a workaround // binary not supported in JavaScript client right now, using String as a workaround
typeMapping.put("ByteArray", "String"); // I don't see ByteArray defined in the Swagger docs. typeMapping.put("ByteArray", "Blob"); // I don't see ByteArray defined in the Swagger docs.
typeMapping.put("binary", "String"); typeMapping.put("binary", "Blob");
typeMapping.put("UUID", "String"); typeMapping.put("UUID", "String");
importMapping.clear(); importMapping.clear();
@@ -652,7 +653,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
* @return Normalized type * @return Normalized type
*/ */
public String normalizeType(String type) { public String normalizeType(String type) {
return type.replaceAll("\\b(Boolean|Integer|Number|String|Date)\\b", "'$1'"); return type.replaceAll("\\b(Boolean|Integer|Number|String|Date|Blob)\\b", "'$1'");
} }
@Override @Override

View File

@@ -421,6 +421,10 @@
request.accept(accept); request.accept(accept);
} }
if (returnType === 'Blob') {
request.responseType('blob');
}
// Attach previously saved cookies, if enabled // Attach previously saved cookies, if enabled
if (this.enableCookies){ if (this.enableCookies){
if (typeof window === 'undefined') { if (typeof window === 'undefined') {
@@ -501,6 +505,8 @@
return String(data); return String(data);
case 'Date': case 'Date':
return this.parseDate(String(data)); return this.parseDate(String(data));
case 'Blob':
return data;
default: default:
if (type === Object) { if (type === Object) {
// generic object, return directly // generic object, return directly

View File

@@ -8,7 +8,7 @@
"test": "./node_modules/mocha/bin/mocha --recursive" "test": "./node_modules/mocha/bin/mocha --recursive"
}, },
"dependencies": { "dependencies": {
"superagent": "1.7.1" "superagent": "3.5.2"
}, },
"devDependencies": { "devDependencies": {
"mocha": "~2.3.4", "mocha": "~2.3.4",

View File

@@ -420,10 +420,10 @@ public class JavaScriptModelTest {
Assert.assertEquals(property.baseName, "inputBinaryData"); Assert.assertEquals(property.baseName, "inputBinaryData");
Assert.assertEquals(property.getter, "getInputBinaryData"); Assert.assertEquals(property.getter, "getInputBinaryData");
Assert.assertEquals(property.setter, "setInputBinaryData"); Assert.assertEquals(property.setter, "setInputBinaryData");
Assert.assertEquals(property.datatype, "String"); Assert.assertEquals(property.datatype, "Blob");
Assert.assertEquals(property.name, "inputBinaryData"); Assert.assertEquals(property.name, "inputBinaryData");
Assert.assertEquals(property.defaultValue, null); Assert.assertEquals(property.defaultValue, null);
Assert.assertEquals(property.baseType, "String"); Assert.assertEquals(property.baseType, "Blob");
Assert.assertFalse(property.hasMore); Assert.assertFalse(property.hasMore);
Assert.assertFalse(property.required); Assert.assertFalse(property.required);
Assert.assertTrue(property.isNotContainer); Assert.assertTrue(property.isNotContainer);

View File

@@ -78,7 +78,7 @@ var _double = 1.2; // Number | None
var patternWithoutDelimiter = "patternWithoutDelimiter_example"; // String | None var patternWithoutDelimiter = "patternWithoutDelimiter_example"; // String | None
var _byte = "B"; // String | None var _byte = B; // Blob | None
var opts = { var opts = {
'integer': 56, // Number | None 'integer': 56, // Number | None
@@ -86,7 +86,7 @@ var opts = {
'int64': 789, // Number | None 'int64': 789, // Number | None
'_float': 3.4, // Number | None '_float': 3.4, // Number | None
'_string': "_string_example", // String | None '_string': "_string_example", // String | None
'binary': "B", // String | None 'binary': B, // Blob | None
'_date': new Date("2013-10-20"), // Date | None '_date': new Date("2013-10-20"), // Date | None
'dateTime': new Date("2013-10-20T19:20:30+01:00"), // Date | None 'dateTime': new Date("2013-10-20T19:20:30+01:00"), // Date | None
'password': "password_example", // String | None 'password': "password_example", // String | None
@@ -107,13 +107,13 @@ Name | Type | Description | Notes
**_number** | **Number**| None | **_number** | **Number**| None |
**_double** | **Number**| None | **_double** | **Number**| None |
**patternWithoutDelimiter** | **String**| None | **patternWithoutDelimiter** | **String**| None |
**_byte** | **String**| None | **_byte** | **Blob**| None |
**integer** | **Number**| None | [optional] **integer** | **Number**| None | [optional]
**int32** | **Number**| None | [optional] **int32** | **Number**| None | [optional]
**int64** | **Number**| None | [optional] **int64** | **Number**| None | [optional]
**_float** | **Number**| None | [optional] **_float** | **Number**| None | [optional]
**_string** | **String**| None | [optional] **_string** | **String**| None | [optional]
**binary** | **String**| None | [optional] **binary** | **Blob**| None | [optional]
**_date** | **Date**| None | [optional] **_date** | **Date**| None | [optional]
**dateTime** | **Date**| None | [optional] **dateTime** | **Date**| None | [optional]
**password** | **String**| None | [optional] **password** | **String**| None | [optional]

View File

@@ -10,8 +10,8 @@ Name | Type | Description | Notes
**_float** | **Number** | | [optional] **_float** | **Number** | | [optional]
**_double** | **Number** | | [optional] **_double** | **Number** | | [optional]
**_string** | **String** | | [optional] **_string** | **String** | | [optional]
**_byte** | **String** | | **_byte** | **Blob** | |
**binary** | **String** | | [optional] **binary** | **Blob** | | [optional]
**_date** | **Date** | | **_date** | **Date** | |
**dateTime** | **Date** | | [optional] **dateTime** | **Date** | | [optional]
**uuid** | **String** | | [optional] **uuid** | **String** | | [optional]

View File

@@ -8,7 +8,7 @@
"test": "./node_modules/mocha/bin/mocha --recursive" "test": "./node_modules/mocha/bin/mocha --recursive"
}, },
"dependencies": { "dependencies": {
"superagent": "1.7.1" "superagent": "3.5.2"
}, },
"devDependencies": { "devDependencies": {
"mocha": "~2.3.4", "mocha": "~2.3.4",

View File

@@ -415,6 +415,10 @@
request.accept(accept); request.accept(accept);
} }
if (returnType === 'Blob') {
request.responseType('blob');
}
// Attach previously saved cookies, if enabled // Attach previously saved cookies, if enabled
if (this.enableCookies){ if (this.enableCookies){
if (typeof window === 'undefined') { if (typeof window === 'undefined') {
@@ -477,6 +481,8 @@
return String(data); return String(data);
case 'Date': case 'Date':
return this.parseDate(String(data)); return this.parseDate(String(data));
case 'Blob':
return data;
default: default:
if (type === Object) { if (type === Object) {
// generic object, return directly // generic object, return directly

View File

@@ -102,14 +102,14 @@
* @param {Number} _number None * @param {Number} _number None
* @param {Number} _double None * @param {Number} _double None
* @param {String} patternWithoutDelimiter None * @param {String} patternWithoutDelimiter None
* @param {String} _byte None * @param {Blob} _byte None
* @param {Object} opts Optional parameters * @param {Object} opts Optional parameters
* @param {Number} opts.integer None * @param {Number} opts.integer None
* @param {Number} opts.int32 None * @param {Number} opts.int32 None
* @param {Number} opts.int64 None * @param {Number} opts.int64 None
* @param {Number} opts._float None * @param {Number} opts._float None
* @param {String} opts._string None * @param {String} opts._string None
* @param {String} opts.binary None * @param {Blob} opts.binary None
* @param {Date} opts._date None * @param {Date} opts._date None
* @param {Date} opts.dateTime None * @param {Date} opts.dateTime None
* @param {String} opts.password None * @param {String} opts.password None
@@ -182,14 +182,14 @@
* @param {Number} _number None * @param {Number} _number None
* @param {Number} _double None * @param {Number} _double None
* @param {String} patternWithoutDelimiter None * @param {String} patternWithoutDelimiter None
* @param {String} _byte None * @param {Blob} _byte None
* @param {Object} opts Optional parameters * @param {Object} opts Optional parameters
* @param {Number} opts.integer None * @param {Number} opts.integer None
* @param {Number} opts.int32 None * @param {Number} opts.int32 None
* @param {Number} opts.int64 None * @param {Number} opts.int64 None
* @param {Number} opts._float None * @param {Number} opts._float None
* @param {String} opts._string None * @param {String} opts._string None
* @param {String} opts.binary None * @param {Blob} opts.binary None
* @param {Date} opts._date None * @param {Date} opts._date None
* @param {Date} opts.dateTime None * @param {Date} opts.dateTime None
* @param {String} opts.password None * @param {String} opts.password None
@@ -214,8 +214,8 @@
* @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to -efg) * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to -efg)
* @param {Array.<module:model/String>} opts.enumQueryStringArray Query parameter enum test (string array) * @param {Array.<module:model/String>} opts.enumQueryStringArray Query parameter enum test (string array)
* @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to -efg) * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to -efg)
* @param {Number} opts.enumQueryInteger Query parameter enum test (double) * @param {module:model/Number} opts.enumQueryInteger Query parameter enum test (double)
* @param {Number} opts.enumQueryDouble Query parameter enum test (double) * @param {module:model/Number} opts.enumQueryDouble Query parameter enum test (double)
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
*/ */
this.testEnumParametersWithHttpInfo = function(opts) { this.testEnumParametersWithHttpInfo = function(opts) {
@@ -262,8 +262,8 @@
* @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to -efg) * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to -efg)
* @param {Array.<module:model/String>} opts.enumQueryStringArray Query parameter enum test (string array) * @param {Array.<module:model/String>} opts.enumQueryStringArray Query parameter enum test (string array)
* @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to -efg) * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to -efg)
* @param {Number} opts.enumQueryInteger Query parameter enum test (double) * @param {module:model/Number} opts.enumQueryInteger Query parameter enum test (double)
* @param {Number} opts.enumQueryDouble Query parameter enum test (double) * @param {module:model/Number} opts.enumQueryDouble Query parameter enum test (double)
* @return {Promise} a {@link https://www.promisejs.org/|Promise} * @return {Promise} a {@link https://www.promisejs.org/|Promise}
*/ */
this.testEnumParameters = function(opts) { this.testEnumParameters = function(opts) {

View File

@@ -42,7 +42,7 @@
* @alias module:model/FormatTest * @alias module:model/FormatTest
* @class * @class
* @param _number {Number} * @param _number {Number}
* @param _byte {String} * @param _byte {Blob}
* @param _date {Date} * @param _date {Date}
* @param password {String} * @param password {String}
*/ */
@@ -97,10 +97,10 @@
obj['string'] = ApiClient.convertToType(data['string'], 'String'); obj['string'] = ApiClient.convertToType(data['string'], 'String');
} }
if (data.hasOwnProperty('byte')) { if (data.hasOwnProperty('byte')) {
obj['byte'] = ApiClient.convertToType(data['byte'], 'String'); obj['byte'] = ApiClient.convertToType(data['byte'], Blob);
} }
if (data.hasOwnProperty('binary')) { if (data.hasOwnProperty('binary')) {
obj['binary'] = ApiClient.convertToType(data['binary'], 'String'); obj['binary'] = ApiClient.convertToType(data['binary'], Blob);
} }
if (data.hasOwnProperty('date')) { if (data.hasOwnProperty('date')) {
obj['date'] = ApiClient.convertToType(data['date'], 'Date'); obj['date'] = ApiClient.convertToType(data['date'], 'Date');
@@ -147,11 +147,11 @@
*/ */
exports.prototype['string'] = undefined; exports.prototype['string'] = undefined;
/** /**
* @member {String} byte * @member {Blob} byte
*/ */
exports.prototype['byte'] = undefined; exports.prototype['byte'] = undefined;
/** /**
* @member {String} binary * @member {Blob} binary
*/ */
exports.prototype['binary'] = undefined; exports.prototype['binary'] = undefined;
/** /**

View File

@@ -81,7 +81,7 @@ var _double = 1.2; // Number | None
var patternWithoutDelimiter = "patternWithoutDelimiter_example"; // String | None var patternWithoutDelimiter = "patternWithoutDelimiter_example"; // String | None
var _byte = "B"; // String | None var _byte = B; // Blob | None
var opts = { var opts = {
'integer': 56, // Number | None 'integer': 56, // Number | None
@@ -89,7 +89,7 @@ var opts = {
'int64': 789, // Number | None 'int64': 789, // Number | None
'_float': 3.4, // Number | None '_float': 3.4, // Number | None
'_string': "_string_example", // String | None '_string': "_string_example", // String | None
'binary': "B", // String | None 'binary': B, // Blob | None
'_date': new Date("2013-10-20"), // Date | None '_date': new Date("2013-10-20"), // Date | None
'dateTime': new Date("2013-10-20T19:20:30+01:00"), // Date | None 'dateTime': new Date("2013-10-20T19:20:30+01:00"), // Date | None
'password': "password_example", // String | None 'password': "password_example", // String | None
@@ -113,13 +113,13 @@ Name | Type | Description | Notes
**_number** | **Number**| None | **_number** | **Number**| None |
**_double** | **Number**| None | **_double** | **Number**| None |
**patternWithoutDelimiter** | **String**| None | **patternWithoutDelimiter** | **String**| None |
**_byte** | **String**| None | **_byte** | **Blob**| None |
**integer** | **Number**| None | [optional] **integer** | **Number**| None | [optional]
**int32** | **Number**| None | [optional] **int32** | **Number**| None | [optional]
**int64** | **Number**| None | [optional] **int64** | **Number**| None | [optional]
**_float** | **Number**| None | [optional] **_float** | **Number**| None | [optional]
**_string** | **String**| None | [optional] **_string** | **String**| None | [optional]
**binary** | **String**| None | [optional] **binary** | **Blob**| None | [optional]
**_date** | **Date**| None | [optional] **_date** | **Date**| None | [optional]
**dateTime** | **Date**| None | [optional] **dateTime** | **Date**| None | [optional]
**password** | **String**| None | [optional] **password** | **String**| None | [optional]

View File

@@ -10,8 +10,8 @@ Name | Type | Description | Notes
**_float** | **Number** | | [optional] **_float** | **Number** | | [optional]
**_double** | **Number** | | [optional] **_double** | **Number** | | [optional]
**_string** | **String** | | [optional] **_string** | **String** | | [optional]
**_byte** | **String** | | **_byte** | **Blob** | |
**binary** | **String** | | [optional] **binary** | **Blob** | | [optional]
**_date** | **Date** | | **_date** | **Date** | |
**dateTime** | **Date** | | [optional] **dateTime** | **Date** | | [optional]
**uuid** | **String** | | [optional] **uuid** | **String** | | [optional]

View File

@@ -8,7 +8,7 @@
"test": "./node_modules/mocha/bin/mocha --recursive" "test": "./node_modules/mocha/bin/mocha --recursive"
}, },
"dependencies": { "dependencies": {
"superagent": "1.7.1" "superagent": "3.5.2"
}, },
"devDependencies": { "devDependencies": {
"mocha": "~2.3.4", "mocha": "~2.3.4",

View File

@@ -424,6 +424,10 @@
request.accept(accept); request.accept(accept);
} }
if (returnType === 'Blob') {
request.responseType('blob');
}
// Attach previously saved cookies, if enabled // Attach previously saved cookies, if enabled
if (this.enableCookies){ if (this.enableCookies){
if (typeof window === 'undefined') { if (typeof window === 'undefined') {
@@ -488,6 +492,8 @@
return String(data); return String(data);
case 'Date': case 'Date':
return this.parseDate(String(data)); return this.parseDate(String(data));
case 'Blob':
return data;
default: default:
if (type === Object) { if (type === Object) {
// generic object, return directly // generic object, return directly

View File

@@ -104,14 +104,14 @@
* @param {Number} _number None * @param {Number} _number None
* @param {Number} _double None * @param {Number} _double None
* @param {String} patternWithoutDelimiter None * @param {String} patternWithoutDelimiter None
* @param {String} _byte None * @param {Blob} _byte None
* @param {Object} opts Optional parameters * @param {Object} opts Optional parameters
* @param {Number} opts.integer None * @param {Number} opts.integer None
* @param {Number} opts.int32 None * @param {Number} opts.int32 None
* @param {Number} opts.int64 None * @param {Number} opts.int64 None
* @param {Number} opts._float None * @param {Number} opts._float None
* @param {String} opts._string None * @param {String} opts._string None
* @param {String} opts.binary None * @param {Blob} opts.binary None
* @param {Date} opts._date None * @param {Date} opts._date None
* @param {Date} opts.dateTime None * @param {Date} opts.dateTime None
* @param {String} opts.password None * @param {String} opts.password None
@@ -196,8 +196,8 @@
* @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to -efg) * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to -efg)
* @param {Array.<module:model/String>} opts.enumQueryStringArray Query parameter enum test (string array) * @param {Array.<module:model/String>} opts.enumQueryStringArray Query parameter enum test (string array)
* @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to -efg) * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to -efg)
* @param {Number} opts.enumQueryInteger Query parameter enum test (double) * @param {module:model/Number} opts.enumQueryInteger Query parameter enum test (double)
* @param {Number} opts.enumQueryDouble Query parameter enum test (double) * @param {module:model/Number} opts.enumQueryDouble Query parameter enum test (double)
* @param {module:api/FakeApi~testEnumParametersCallback} callback The callback function, accepting three arguments: error, data, response * @param {module:api/FakeApi~testEnumParametersCallback} callback The callback function, accepting three arguments: error, data, response
*/ */
this.testEnumParameters = function(opts, callback) { this.testEnumParameters = function(opts, callback) {

View File

@@ -42,7 +42,7 @@
* @alias module:model/FormatTest * @alias module:model/FormatTest
* @class * @class
* @param _number {Number} * @param _number {Number}
* @param _byte {String} * @param _byte {Blob}
* @param _date {Date} * @param _date {Date}
* @param password {String} * @param password {String}
*/ */
@@ -97,10 +97,10 @@
obj['string'] = ApiClient.convertToType(data['string'], 'String'); obj['string'] = ApiClient.convertToType(data['string'], 'String');
} }
if (data.hasOwnProperty('byte')) { if (data.hasOwnProperty('byte')) {
obj['byte'] = ApiClient.convertToType(data['byte'], 'String'); obj['byte'] = ApiClient.convertToType(data['byte'], Blob);
} }
if (data.hasOwnProperty('binary')) { if (data.hasOwnProperty('binary')) {
obj['binary'] = ApiClient.convertToType(data['binary'], 'String'); obj['binary'] = ApiClient.convertToType(data['binary'], Blob);
} }
if (data.hasOwnProperty('date')) { if (data.hasOwnProperty('date')) {
obj['date'] = ApiClient.convertToType(data['date'], 'Date'); obj['date'] = ApiClient.convertToType(data['date'], 'Date');
@@ -147,11 +147,11 @@
*/ */
exports.prototype['string'] = undefined; exports.prototype['string'] = undefined;
/** /**
* @member {String} byte * @member {Blob} byte
*/ */
exports.prototype['byte'] = undefined; exports.prototype['byte'] = undefined;
/** /**
* @member {String} binary * @member {Blob} binary
*/ */
exports.prototype['binary'] = undefined; exports.prototype['binary'] = undefined;
/** /**