Skip to content

Commit

Permalink
Merge pull request #901 from swagger-api/issue-899
Browse files Browse the repository at this point in the history
added operation type checking, write header to library, updated client library
  • Loading branch information
fehguy committed Feb 3, 2015
2 parents f2f939e + 707a705 commit 9d9f58a
Show file tree
Hide file tree
Showing 6 changed files with 386 additions and 328 deletions.
79 changes: 51 additions & 28 deletions dist/lib/swagger-client.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/**
* swagger-client - swagger.js is a javascript client for use with swaggering APIs.
* @version v2.1.0-M1
* @version v2.1.1-M1
* @link http://swagger.io
* @license apache 2.0
*/
Expand Down Expand Up @@ -31,7 +31,13 @@ ArrayModel.prototype.createJSONSample = function(modelsToIgnore) {
}
else if (this.ref) {
var name = simpleRef(this.ref);
result = models[name].createJSONSample();
if(typeof modelsToIgnore[name] === 'undefined') {
modelsToIgnore[name] = this;
result = models[name].createJSONSample(modelsToIgnore);
}
else {
return name;
}
}
return [ result ];
};
Expand Down Expand Up @@ -90,6 +96,7 @@ SwaggerAuthorizations.prototype.apply = function (obj, authorizations) {
else {
// 2.0 support
if (Array.isArray(authorizations)) {

for (var i = 0; i < authorizations.length; i++) {
var auth = authorizations[i];
for (name in auth) {
Expand Down Expand Up @@ -607,12 +614,15 @@ var Operation = function(parent, scheme, operationId, httpMethod, path, args, de
param.allowableValues.descriptiveValues.push({value : value, isDefault: isDefault});
}
}
if(param.type === 'array' && typeof param.allowableValues === 'undefined') {
// can't show as a list if no values to select from
delete param.isList;
delete param.allowMultiple;
if(param.type === 'array') {
innerType = [innerType];
if(typeof param.allowableValues === 'undefined') {
// can't show as a list if no values to select from
delete param.isList;
delete param.allowMultiple;
}
}
param.signature = this.getModelSignature(innerType, models);
param.signature = this.getModelSignature(innerType, models).toString();
param.sampleJSON = this.getModelSampleJSON(innerType, models);
param.responseClassSignature = param.signature;
}
Expand Down Expand Up @@ -764,16 +774,21 @@ Operation.prototype.getModelSignature = function(type, definitions) {
listType = true;
type = type[0];
}
else if(typeof type === 'undefined')
type = 'undefined';

if(type === 'string')
isPrimitive = true;
else
isPrimitive = (listType && definitions[listType]) || (definitions[type]) ? false : true;
if (isPrimitive) {
return type;
if(listType)
return 'Array[' + type + ']';
else
return type.toString();
} else {
if (listType)
return definitions[type].getMockSignature();
return 'Array[' + definitions[type].getMockSignature() + ']';
else
return definitions[type].getMockSignature();
}
Expand Down Expand Up @@ -965,8 +980,13 @@ Operation.prototype.execute = function(arg1, arg2, arg3, arg4, parent) {
fail(message);
return;
}
var headers = this.getHeaderParams(args);
headers = this.setContentTypes(args, opts);
var allHeaders = this.getHeaderParams(args);
var contentTypeHeaders = this.setContentTypes(args, opts);

var headers = {};
for (var attrname in allHeaders) { headers[attrname] = allHeaders[attrname]; }
for (var attrname in contentTypeHeaders) { headers[attrname] = contentTypeHeaders[attrname]; }

var body = this.getBody(headers, args);
var url = this.urlify(args);

Expand Down Expand Up @@ -1013,10 +1033,10 @@ Operation.prototype.setContentTypes = function(args, opts) {
else
definedFormParams.push(param);
}
else if(param.in === 'header' && this.headers) {
else if(param.in === 'header' && opts) {
var key = param.name;
var headerValue = this.headers[param.name];
if(typeof this.headers[param.name] !== 'undefined')
var headerValue = opts[param.name];
if(typeof opts[param.name] !== 'undefined')
headers[key] = headerValue;
}
else if(param.in === 'body' && typeof args[param.name] !== 'undefined') {
Expand Down Expand Up @@ -1184,21 +1204,20 @@ var Model = function(name, definition) {
};

Model.prototype.createJSONSample = function(modelsToIgnore) {
var result = {};
var i, result = {};
modelsToIgnore = (modelsToIgnore||{});
modelsToIgnore[this.name] = this;
var i;
for (i = 0; i < this.properties.length; i++) {
prop = this.properties[i];
result[prop.name] = prop.getSampleValue(modelsToIgnore);
var sample = prop.getSampleValue(modelsToIgnore);
result[prop.name] = sample;
}
delete modelsToIgnore[this.name];
return result;
};

Model.prototype.getSampleValue = function(modelsToIgnore) {
var i;
var obj = {};
var i, obj = {};
for(i = 0; i < this.properties.length; i++ ) {
var property = this.properties[i];
obj[property.name] = property.sampleValue(false, modelsToIgnore);
Expand All @@ -1207,8 +1226,7 @@ Model.prototype.getSampleValue = function(modelsToIgnore) {
};

Model.prototype.getMockSignature = function(modelsToIgnore) {
var propertiesStr = [];
var i, prop;
var i, prop, propertiesStr = [];
for (i = 0; i < this.properties.length; i++) {
prop = this.properties[i];
propertiesStr.push(prop.toString());
Expand Down Expand Up @@ -1282,7 +1300,7 @@ Property.prototype.isArray = function () {
Property.prototype.sampleValue = function(isArray, ignoredModels) {
isArray = (isArray || this.isArray());
ignoredModels = (ignoredModels || {});
var type = getStringSignature(this.obj);
var type = getStringSignature(this.obj, true);
var output;

if(this.$ref) {
Expand All @@ -1292,8 +1310,9 @@ Property.prototype.sampleValue = function(isArray, ignoredModels) {
ignoredModels[type] = this;
output = refModel.getSampleValue(ignoredModels);
}
else
type = refModel;
else {
output = refModelName;
}
}
else if(this.example)
output = this.example;
Expand Down Expand Up @@ -1324,16 +1343,20 @@ Property.prototype.sampleValue = function(isArray, ignoredModels) {
return output;
};

getStringSignature = function(obj) {
getStringSignature = function(obj, baseComponent) {
var str = '';
if(typeof obj.$ref !== 'undefined')
str += simpleRef(obj.$ref);
else if(typeof obj.type === 'undefined')
str += 'object';
else if(obj.type === 'array') {
str += 'Array[';
str += getStringSignature((obj.items || obj.$ref || {}));
str += ']';
if(baseComponent)
str += getStringSignature((obj.items || obj.$ref || {}));
else {
str += 'Array[';
str += getStringSignature((obj.items || obj.$ref || {}));
str += ']';
}
}
else if(obj.type === 'integer' && obj.format === 'int32')
str += 'integer';
Expand Down

0 comments on commit 9d9f58a

Please sign in to comment.