aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/swagger-ui/lib/swagger.js
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-07 09:06:01 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-07 09:06:01 -0400
commit2818d8ccd231039aa01e9b0bfedd59c48a656342 (patch)
tree45bf073ddc71ea80f3da9194132af9eb5246cb65 /MediaBrowser.Server.Implementations/swagger-ui/lib/swagger.js
parent049ffa2b4ef6298ac36f1c92fa9f35a7b68ad3e2 (diff)
updated servicestack to 3.9.44
Diffstat (limited to 'MediaBrowser.Server.Implementations/swagger-ui/lib/swagger.js')
-rw-r--r--MediaBrowser.Server.Implementations/swagger-ui/lib/swagger.js316
1 files changed, 287 insertions, 29 deletions
diff --git a/MediaBrowser.Server.Implementations/swagger-ui/lib/swagger.js b/MediaBrowser.Server.Implementations/swagger-ui/lib/swagger.js
index 68d8e40cc..b1f3abfff 100644
--- a/MediaBrowser.Server.Implementations/swagger-ui/lib/swagger.js
+++ b/MediaBrowser.Server.Implementations/swagger-ui/lib/swagger.js
@@ -1,6 +1,6 @@
-// Generated by CoffeeScript 1.3.3
+// Generated by CoffeeScript 1.4.0
(function() {
- var SwaggerApi, SwaggerOperation, SwaggerRequest, SwaggerResource,
+ var SwaggerApi, SwaggerModel, SwaggerModelProperty, SwaggerOperation, SwaggerRequest, SwaggerResource,
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
SwaggerApi = (function() {
@@ -40,6 +40,8 @@
}
this.failure = options.failure != null ? options.failure : function() {};
this.progress = options.progress != null ? options.progress : function() {};
+ this.headers = options.headers != null ? options.headers : {};
+ this.booleanValues = options.booleanValues != null ? options.booleanValues : new Array('true', 'false');
this.discoveryUrl = this.suffixApiKey(this.discoveryUrl);
if (options.success != null) {
this.build();
@@ -51,6 +53,9 @@
this.progress('fetching resource list: ' + this.discoveryUrl);
return jQuery.getJSON(this.discoveryUrl, function(response) {
var res, resource, _i, _j, _len, _len1, _ref, _ref1;
+ if (response.apiVersion != null) {
+ _this.apiVersion = response.apiVersion;
+ }
if ((response.basePath != null) && jQuery.trim(response.basePath).length > 0) {
_this.basePath = response.basePath;
if (_this.basePath.match(/^HTTP/i) == null) {
@@ -61,8 +66,8 @@
_this.basePath = _this.discoveryUrl.substring(0, _this.discoveryUrl.lastIndexOf('/'));
log('derived basepath from discoveryUrl as ' + _this.basePath);
}
- _this.resources = {};
- _this.resourcesArray = [];
+ _this.apis = {};
+ _this.apisArray = [];
if (response.resourcePath != null) {
_this.resourcePath = response.resourcePath;
res = null;
@@ -76,8 +81,8 @@
}
}
if (res != null) {
- _this.resources[res.name] = res;
- _this.resourcesArray.push(res);
+ _this.apis[res.name] = res;
+ _this.apisArray.push(res);
res.ready = true;
_this.selfReflect();
}
@@ -86,28 +91,37 @@
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
resource = _ref1[_j];
res = new SwaggerResource(resource, _this);
- _this.resources[res.name] = res;
- _this.resourcesArray.push(res);
+ _this.apis[res.name] = res;
+ _this.apisArray.push(res);
}
}
return _this;
}).error(function(error) {
- return _this.fail(error.status + ' : ' + error.statusText + ' ' + _this.discoveryUrl);
+ if (_this.discoveryUrl.substring(0, 4) !== 'http') {
+ return _this.fail('Please specify the protocol for ' + _this.discoveryUrl);
+ } else if (error.status === 0) {
+ return _this.fail('Can\'t read from server. It may not have the appropriate access-control-origin settings.');
+ } else if (error.status === 404) {
+ return _this.fail('Can\'t read swagger JSON from ' + _this.discoveryUrl);
+ } else {
+ return _this.fail(error.status + ' : ' + error.statusText + ' ' + _this.discoveryUrl);
+ }
});
};
SwaggerApi.prototype.selfReflect = function() {
var resource, resource_name, _ref;
- if (this.resources == null) {
+ if (this.apis == null) {
return false;
}
- _ref = this.resources;
+ _ref = this.apis;
for (resource_name in _ref) {
resource = _ref[resource_name];
if (resource.ready == null) {
return false;
}
}
+ this.setConsolidatedModels();
this.ready = true;
if (this.success != null) {
return this.success();
@@ -119,6 +133,29 @@
throw message;
};
+ SwaggerApi.prototype.setConsolidatedModels = function() {
+ var model, modelName, resource, resource_name, _i, _len, _ref, _ref1, _results;
+ this.modelsArray = [];
+ this.models = {};
+ _ref = this.apis;
+ for (resource_name in _ref) {
+ resource = _ref[resource_name];
+ for (modelName in resource.models) {
+ if (!(this.models[modelName] != null)) {
+ this.models[modelName] = resource.models[modelName];
+ this.modelsArray.push(resource.models[modelName]);
+ }
+ }
+ }
+ _ref1 = this.modelsArray;
+ _results = [];
+ for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+ model = _ref1[_i];
+ _results.push(model.setReferencedModels(this.models));
+ }
+ return _results;
+ };
+
SwaggerApi.prototype.suffixApiKey = function(url) {
var sep;
if ((this.api_key != null) && jQuery.trim(this.api_key).length > 0 && (url != null)) {
@@ -131,7 +168,7 @@
SwaggerApi.prototype.help = function() {
var operation, operation_name, parameter, resource, resource_name, _i, _len, _ref, _ref1, _ref2;
- _ref = this.resources;
+ _ref = this.apis;
for (resource_name in _ref) {
resource = _ref[resource_name];
console.log(resource_name);
@@ -166,8 +203,11 @@
this.basePath = this.api.basePath;
this.operations = {};
this.operationsArray = [];
+ this.modelsArray = [];
+ this.models = {};
if ((resourceObj.operations != null) && (this.api.resourcePath != null)) {
- this.api.progress('reading resource ' + this.name + ' operations');
+ this.api.progress('reading resource ' + this.name + ' models and operations');
+ this.addModels(resourceObj.models);
this.addOperations(resourceObj.path, resourceObj.operations);
this.api[this.name] = this;
} else {
@@ -182,6 +222,7 @@
_this.basePath = response.basePath;
_this.basePath = _this.basePath.replace(/\/$/, '');
}
+ _this.addModels(response.models);
if (response.apis) {
_ref = response.apis;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -193,18 +234,42 @@
_this.ready = true;
return _this.api.selfReflect();
}).error(function(error) {
- return _this.fail(error.status + ' : ' + error.statusText + ' ' + _this.url);
+ return _this.api.fail("Unable to read api '" + _this.name + "' from path " + _this.url + " (server returned " + error.statusText + ")");
});
}
}
+ SwaggerResource.prototype.addModels = function(models) {
+ var model, modelName, swaggerModel, _i, _len, _ref, _results;
+ if (models != null) {
+ for (modelName in models) {
+ if (!(this.models[modelName] != null)) {
+ swaggerModel = new SwaggerModel(modelName, models[modelName]);
+ this.modelsArray.push(swaggerModel);
+ this.models[modelName] = swaggerModel;
+ }
+ }
+ _ref = this.modelsArray;
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ model = _ref[_i];
+ _results.push(model.setReferencedModels(this.models));
+ }
+ return _results;
+ }
+ };
+
SwaggerResource.prototype.addOperations = function(resource_path, ops) {
- var o, op, _i, _len, _results;
+ var consumes, o, op, _i, _len, _results;
if (ops) {
_results = [];
for (_i = 0, _len = ops.length; _i < _len; _i++) {
o = ops[_i];
- op = new SwaggerOperation(o.nickname, resource_path, o.httpMethod, o.parameters, o.summary, o.notes, this);
+ consumes = o.consumes;
+ if (o.supportedContentTypes) {
+ consumes = o.supportedContentTypes;
+ }
+ op = new SwaggerOperation(o.nickname, resource_path, o.httpMethod, o.parameters, o.summary, o.notes, o.responseClass, o.errorResponses, this, o.consumes, o.produces);
this.operations[op.nickname] = op;
_results.push(this.operationsArray.push(op));
}
@@ -231,10 +296,143 @@
})();
+ SwaggerModel = (function() {
+
+ function SwaggerModel(modelName, obj) {
+ var propertyName;
+ this.name = obj.id != null ? obj.id : modelName;
+ this.properties = [];
+ for (propertyName in obj.properties) {
+ this.properties.push(new SwaggerModelProperty(propertyName, obj.properties[propertyName]));
+ }
+ }
+
+ SwaggerModel.prototype.setReferencedModels = function(allModels) {
+ var prop, _i, _len, _ref, _results;
+ _ref = this.properties;
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ prop = _ref[_i];
+ if (allModels[prop.dataType] != null) {
+ _results.push(prop.refModel = allModels[prop.dataType]);
+ } else if ((prop.refDataType != null) && (allModels[prop.refDataType] != null)) {
+ _results.push(prop.refModel = allModels[prop.refDataType]);
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ };
+
+ SwaggerModel.prototype.getMockSignature = function(prefix, modelsToIgnore) {
+ var classClose, classOpen, prop, propertiesStr, returnVal, strong, strongClose, stronger, _i, _j, _len, _len1, _ref, _ref1;
+ propertiesStr = [];
+ _ref = this.properties;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ prop = _ref[_i];
+ propertiesStr.push(prop.toString());
+ }
+ strong = '<span style="font-weight: bold; color: #000; font-size: 1.0em">';
+ stronger = '<span style="font-weight: bold; color: #000; font-size: 1.1em">';
+ strongClose = '</span>';
+ classOpen = strong + 'class ' + this.name + '(' + strongClose;
+ classClose = strong + ')' + strongClose;
+ returnVal = classOpen + '<span>' + propertiesStr.join('</span>, <span>') + '</span>' + classClose;
+ if (prefix != null) {
+ returnVal = stronger + prefix + strongClose + '<br/>' + returnVal;
+ }
+ if (!modelsToIgnore) {
+ modelsToIgnore = [];
+ }
+ modelsToIgnore.push(this);
+ _ref1 = this.properties;
+ for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
+ prop = _ref1[_j];
+ if ((prop.refModel != null) && (modelsToIgnore.indexOf(prop.refModel)) === -1) {
+ returnVal = returnVal + ('<br>' + prop.refModel.getMockSignature(void 0, modelsToIgnore));
+ }
+ }
+ return returnVal;
+ };
+
+ SwaggerModel.prototype.createJSONSample = function(modelToIgnore) {
+ var prop, result, _i, _len, _ref;
+ result = {};
+ _ref = this.properties;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ prop = _ref[_i];
+ result[prop.name] = prop.getSampleValue(modelToIgnore);
+ }
+ return result;
+ };
+
+ return SwaggerModel;
+
+ })();
+
+ SwaggerModelProperty = (function() {
+
+ function SwaggerModelProperty(name, obj) {
+ this.name = name;
+ this.dataType = obj.type;
+ this.isArray = this.dataType.toLowerCase() === 'array';
+ this.descr = obj.description;
+ if (obj.items != null) {
+ if (obj.items.type != null) {
+ this.refDataType = obj.items.type;
+ }
+ if (obj.items.$ref != null) {
+ this.refDataType = obj.items.$ref;
+ }
+ }
+ this.dataTypeWithRef = this.refDataType != null ? this.dataType + '[' + this.refDataType + ']' : this.dataType;
+ if (obj.allowableValues != null) {
+ this.valueType = obj.allowableValues.valueType;
+ this.values = obj.allowableValues.values;
+ if (this.values != null) {
+ this.valuesString = "'" + this.values.join("' or '") + "'";
+ }
+ }
+ }
+
+ SwaggerModelProperty.prototype.getSampleValue = function(modelToIgnore) {
+ var result;
+ if ((this.refModel != null) && (!(this.refModel === modelToIgnore))) {
+ result = this.refModel.createJSONSample(this.refModel);
+ } else {
+ if (this.isArray) {
+ result = this.refDataType;
+ } else {
+ result = this.dataType;
+ }
+ }
+ if (this.isArray) {
+ return [result];
+ } else {
+ return result;
+ }
+ };
+
+ SwaggerModelProperty.prototype.toString = function() {
+ var str;
+ str = this.name + ': ' + this.dataTypeWithRef;
+ if (this.values != null) {
+ str += " = ['" + this.values.join("' or '") + "']";
+ }
+ if (this.descr != null) {
+ str += ' {' + this.descr + '}';
+ }
+ return str;
+ };
+
+ return SwaggerModelProperty;
+
+ })();
+
SwaggerOperation = (function() {
- function SwaggerOperation(nickname, path, httpMethod, parameters, summary, notes, resource) {
- var parameter, v, _i, _j, _len, _len1, _ref, _ref1,
+ function SwaggerOperation(nickname, path, httpMethod, parameters, summary, notes, responseClass, errorResponses, resource, consumes, produces) {
+ var parameter, v, _i, _j, _len, _len1, _ref, _ref1, _ref2,
_this = this;
this.nickname = nickname;
this.path = path;
@@ -242,7 +440,11 @@
this.parameters = parameters != null ? parameters : [];
this.summary = summary;
this.notes = notes;
+ this.responseClass = responseClass;
+ this.errorResponses = errorResponses;
this.resource = resource;
+ this.consumes = consumes;
+ this.produces = produces;
this["do"] = __bind(this["do"], this);
if (this.nickname == null) {
@@ -258,10 +460,24 @@
this.httpMethod = this.httpMethod.toLowerCase();
this.isGetMethod = this.httpMethod === "get";
this.resourceName = this.resource.name;
- _ref = this.parameters;
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- parameter = _ref[_i];
+ if (((_ref = this.responseClass) != null ? _ref.toLowerCase() : void 0) === 'void') {
+ this.responseClass = void 0;
+ }
+ if (this.responseClass != null) {
+ this.responseClassSignature = this.getSignature(this.responseClass, this.resource.models);
+ this.responseSampleJSON = this.getSampleJSON(this.responseClass, this.resource.models);
+ }
+ this.errorResponses = this.errorResponses || [];
+ _ref1 = this.parameters;
+ for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+ parameter = _ref1[_i];
parameter.name = parameter.name || parameter.dataType;
+ if (parameter.dataType.toLowerCase() === 'boolean') {
+ parameter.allowableValues = {};
+ parameter.allowableValues.values = this.resource.api.booleanValues;
+ }
+ parameter.signature = this.getSignature(parameter.dataType, this.resource.models);
+ parameter.sampleJSON = this.getSampleJSON(parameter.dataType, this.resource.models);
if (parameter.allowableValues != null) {
if (parameter.allowableValues.valueType === "RANGE") {
parameter.isRange = true;
@@ -270,9 +486,9 @@
}
if (parameter.allowableValues.values != null) {
parameter.allowableValues.descriptiveValues = [];
- _ref1 = parameter.allowableValues.values;
- for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
- v = _ref1[_j];
+ _ref2 = parameter.allowableValues.values;
+ for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
+ v = _ref2[_j];
if ((parameter.defaultValue != null) && parameter.defaultValue === v) {
parameter.allowableValues.descriptiveValues.push({
value: v,
@@ -293,6 +509,40 @@
};
}
+ SwaggerOperation.prototype.isListType = function(dataType) {
+ if (dataType.indexOf('[') >= 0) {
+ return dataType.substring(dataType.indexOf('[') + 1, dataType.indexOf(']'));
+ } else {
+ return void 0;
+ }
+ };
+
+ SwaggerOperation.prototype.getSignature = function(dataType, models) {
+ var isPrimitive, listType;
+ listType = this.isListType(dataType);
+ isPrimitive = ((listType != null) && models[listType]) || (models[dataType] != null) ? false : true;
+ if (isPrimitive) {
+ return dataType;
+ } else {
+ if (listType != null) {
+ return models[listType].getMockSignature(dataType);
+ } else {
+ return models[dataType].getMockSignature(dataType);
+ }
+ }
+ };
+
+ SwaggerOperation.prototype.getSampleJSON = function(dataType, models) {
+ var isPrimitive, listType, val;
+ listType = this.isListType(dataType);
+ isPrimitive = ((listType != null) && models[listType]) || (models[dataType] != null) ? false : true;
+ val = isPrimitive ? void 0 : (listType != null ? models[listType].createJSONSample() : models[dataType].createJSONSample());
+ if (val) {
+ val = listType ? [val] : val;
+ return JSON.stringify(val, null, 2);
+ }
+ };
+
SwaggerOperation.prototype["do"] = function(args, callback, error) {
var body, headers;
if (args == null) {
@@ -333,7 +583,7 @@
};
SwaggerOperation.prototype.urlify = function(args, includeApiKey) {
- var param, queryParams, url, _i, _len, _ref;
+ var param, queryParams, reg, url, _i, _len, _ref;
if (includeApiKey == null) {
includeApiKey = true;
}
@@ -343,7 +593,8 @@
param = _ref[_i];
if (param.paramType === 'path') {
if (args[param.name]) {
- url = url.replace("{" + param.name + "}", encodeURIComponent(args[param.name]));
+ reg = new RegExp('\{' + param.name + '[^\}]*\}', 'gi');
+ url = url.replace(reg, encodeURIComponent(args[param.name]));
delete args[param.name];
} else {
throw "" + param.name + " is a required path param.";
@@ -354,9 +605,9 @@
args[this.apiKeyName] = this.resource.api.api_key;
}
if (this.supportHeaderParams()) {
- queryParams = jQuery.param(this.getQueryParams(args));
+ queryParams = jQuery.param(this.getQueryParams(args, includeApiKey));
} else {
- queryParams = jQuery.param(this.getQueryAndHeaderParams(args));
+ queryParams = jQuery.param(this.getQueryAndHeaderParams(args, includeApiKey));
}
if ((queryParams != null) && queryParams.length > 0) {
url += "?" + queryParams;
@@ -394,7 +645,7 @@
};
SwaggerOperation.prototype.getMatchingParams = function(paramTypes, args, includeApiKey) {
- var matchingParams, param, _i, _len, _ref;
+ var matchingParams, name, param, value, _i, _len, _ref, _ref1;
matchingParams = {};
_ref = this.parameters;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -406,6 +657,13 @@
if (includeApiKey && (this.resource.api.api_key != null) && this.resource.api.api_key.length > 0) {
matchingParams[this.resource.api.apiKeyName] = this.resource.api.api_key;
}
+ if (jQuery.inArray('header', paramTypes) >= 0) {
+ _ref1 = this.resource.api.headers;
+ for (name in _ref1) {
+ value = _ref1[name];
+ matchingParams[name] = value;
+ }
+ }
return matchingParams;
};