angular-swagger-ui
Version:
AngularJS implementation of OpenAPI (aka Swagger) UI
7 lines • 1.86 kB
JavaScript
/*
* Orange angular-swagger-ui - v0.6.5
*
* (C) 2015 Orange, all right reserved
* MIT Licensed
*/
;angular.module("swaggerUi").service("swaggerUiExternalReferences",["$http","$q","swaggerModules","swaggerTranslator",function(a,b,c,d){function e(a){l.reject(a)}function f(b,f,g){var h={method:"GET",url:b,transformResponse:function(a){g&&(a=a.replace(/"\$ref": ?"#\/(.*)\/(.*)"/g,'"$ref": "#/$1/'+g+'/$2"'));var b;try{b=angular.fromJson(a)}catch(c){e({code:500,message:d.translate("errorJsonParse")})}return b}};c.execute(c.BEFORE_LOAD,h).then(function(){a(h).then(function(a){f(a.data)})["catch"](function(a){e({message:a.data,code:a.status})})})["catch"](e)}function g(a){var b,c,d=a.split("#/"),e=d[0];return 0!==e.indexOf("http")&&0!==e.indexOf("https")&&(0===e.indexOf("/")?(b=URL.parse(k),e=b.protocol+"//"+b.host+e):(c=k.lastIndexOf("/"),e=k.substring(0,c)+"/"+e)),e}function h(){function a(a){e++,f(g(a.$ref),function(c){e--,delete a.$ref;for(b in c)a[b]=c[b];0===e&&j()})}var b,c,d,e=0;for(c in m.paths)d=m.paths[c],i(d)&&a(d);0===e&&j()}function i(a){return a&&a.$ref&&0!==a.$ref.indexOf("#/")}function j(){function a(a){var b,c=a.$ref.match(/(.*)#\/(.*)\/(.*)/),d=c[1],e=c[2],h=g(a.$ref);a.$ref=a.$ref.replace(/(.*)#\/(.*)\/(.*)/,"#/$2/$1/$3"),k[h]||(j++,k[h]=!0,f(h,function(a){for(b in a)m[e][d]=a[b];j--,0===j&&l.resolve(!0)},d))}function b(b){i(b)?a(b):i(b.items)&&a(b.items)}function c(a){var c,d,e,f;for(c=0,d=a.parameters||[],e=d.length;c<e;c++)d[c].schema&&b(d[c].schema);for(f in a.responses||{})a.responses[f].schema&&b(a.responses[f].schema)}var d,e,h,j=0,k={};for(d in m.paths){e=m.paths[d];for(h in e)c(e[h])}0===j&&l.resolve(!0)}var k,l,m;this.execute=function(a){return k=a.url,m=a.openApiSpec,l=b.defer(),h(),l.promise}}]).run(["swaggerModules","swaggerUiExternalReferences",function(a,b){a.add(a.BEFORE_PARSE,b,1)}]);