UNPKG

angular-swagger-ui

Version:
7 lines 4.46 kB
/* * Orange angular-swagger-ui - v0.6.5 * * (C) 2015 Orange, all right reserved * MIT Licensed */ "use strict";angular.module("swaggerUi").service("swagger1Converter",["$q","swaggerModules","swaggerLoader",function(a,b,c){function d(d,h){var i,j=h.openApiSpec.info||{},l=[];j.contact={email:j.contact},j.license={name:j.license,url:j.licenseUrl},j.termsOfService=j.termsOfServiceUrl,h.openApiSpec.info=j,h.openApiSpec.paths={},h.openApiSpec.definitions={},h.openApiSpec.tags=[],h.openApiSpec.swagger="2.0",angular.forEach(h.openApiSpec.apis,function(a){var b=h.url;b.match(/(.*)\?(.*)/)?b=b.replace(/(.*)\?(.*)/,"$1"+a.path+"?$2"):b+=a.path,l.push(c.get({url:b}))}),e(h.openApiSpec),a.all(l).then(function(a){b.execute(b.BEFORE_CONVERT,a).then(function(){angular.forEach(a,function(a,b){i=h.openApiSpec.apis[b].path,i=i.substring(i.lastIndexOf("/")+1),f(a.openApiSpec,h.openApiSpec,i),g(a.openApiSpec,h.openApiSpec,i),k(a.openApiSpec,h.openApiSpec)}),d.resolve(!0)})["catch"](d.reject)})["catch"](d.reject)}function e(a){var b={};a.securityDefinitions=b,angular.forEach(a.authorizations,function(a,c){var d=b[c]={type:"basicAuth"===a.type?"basic":a.type,"in":a.passAs,name:a.keyname,scopes:[]};if("oauth2"===a.type){angular.forEach(a.scopes,function(a){d.scopes.push({name:a.scope,description:a.description})});var e=Object.keys(a.grantTypes)[0],f=a.grantTypes[e];"implicit"===e?(d.flow="implicit",d.authorizationUrl=f.loginEndpoint.url):"authorization_code"===e&&(d.flow="accessCode",d.authorizationUrl=f.tokenRequestEndpoint.url,d.tokenUrl=f.tokenEndpoint.url)}}),delete a.authorizations}function f(a,b,c){if(b.info.version=b.info.version||a.apiVersion,b.basePath=b.basePath||a.basePath,0===b.basePath.indexOf("http")){var d=angular.element('<a href="'+b.basePath+'"></a>')[0];b.schemes=[d.protocol.replace(":","")],b.host=d.host,b.basePath=d.pathname}b.tags.push({name:c})}function g(a,b,c){var d,e;angular.forEach(a.apis,function(f){d=b.paths[f.path]=b.paths[f.path]||{},angular.forEach(f.operations,function(b){e={},d[b.method.toLowerCase()]={deprecated:angular.isString(b.deprecated)?"true"===b.deprecated:b.deprecated,description:b.notes,summary:b.summary,operationId:b.nickname,produces:b.produces||a.produces,consumes:b.consumes||a.consumes,parameters:b.parameters,responses:e,tags:[c]},h(a,b),i(a,b),j(a,b,e),delete b.authorizations})})}function h(a,b){angular.forEach(b.parameters,function(b){b["in"]="form"===b.paramType?"formData":b.paramType,b["default"]=b.defaultValue;var c=b.type||b.$ref;a.models&&c&&a.models[c]&&(b.schema={$ref:n(c)},delete b.type)})}function i(a,b){b.authorizations&&(b.security=[],angular.forEach(b.authorizations,function(a,c){var d={};d[c]=[],angular.forEach(a,function(a){d[c].push(a.scope)}),b.security.push(d)})),delete b.authorizations}function j(a,b,c){var d;angular.forEach(b.responseMessages,function(e){if(d=c[e.code]={description:e.message},e.responseModel)a.models&&a.models[e.responseModel]?d.schema={$ref:n(e.responseModel)}:d.type=e.responseModel;else if(200===e.code&&"void"!==b.type&&(d.schema={type:b.type,$ref:n(b.type)},"array"===b.type)){delete d.schema.$ref;var f=b.items.type||b.items.$ref,g=d.schema.items={};a.models&&a.models[f]?g.$ref=n(f):g.type=f}})}function k(a,b){var c,d=new RegExp("Map\\[string,(.*)\\]"),e=new RegExp("List\\[(.*)\\]"),f=[];angular.forEach(a.models,function(c,g){b.definitions[g]=c,c.subTypes&&f.push(g),angular.forEach(c.properties,function(b){var c=b.type||b.$ref;if(c&&m(c,a))b.$ref=n(c),delete b.type;else if(c&&c.match(d)){delete b.$ref;var f=c.match(d)[1];f&&f.match(e)?(f=f.match(e)[1],b.type="object",b.additionalProperties={type:"array",items:l(f,a)}):(b.type="object",b.additionalProperties=l(f,a))}else b.items?(c=b.items.type||b.items.$ref,m(c,a)&&(b.items.$ref=n(c),delete b.items.type)):b["enum"]&&(b.type="string",delete b.$ref)})}),angular.forEach(f,function(a){var d=b.definitions[a];angular.forEach(d.subTypes,function(d){c=b.definitions[d],c&&(b.definitions[d]={allOf:[{$ref:n(a)},c]})}),delete d.subTypes})}function l(a,b){return m(a,b)?{$ref:n(a)}:{type:a}}function m(a,b){return b.models&&b.models[a]}function n(a){return"#/definitions/"+a}this.execute=function(b){var c=a.defer(),e=b.openApiSpec&&b.openApiSpec.swaggerVersion;return"1.2"===e&&("json"===b.parser||"auto"===b.parser&&"application/json"===b.contentType)?d(c,b):c.resolve(!1),c.promise}}]).run(["swaggerModules","swagger1Converter",function(a,b){a.add(a.BEFORE_PARSE,b,10)}]);