UNPKG

gitana

Version:
1 lines 358 kB
(function(a,b){if(typeof exports==="object"){module.exports=b()}else{if(typeof define==="function"&&define.amd){define("gitana",[],b)}else{a.Gitana=b()}}}(this,function(){if(typeof window==="undefined"){window={setTimeout:function(func,milliseconds){setTimeout(func,milliseconds)}}}(function(name,global,definition){global[name]=definition()})("Base",this,function(){var Base=function(){};Base.extend=function(_instance,_static){var extend=Base.prototype.extend;Base._prototyping=true;var proto=new this();extend.call(proto,_instance);proto.base=function(){};delete Base._prototyping;var constructor=proto.constructor;var klass=proto.constructor=function(){if(!Base._prototyping){if(this._constructing||this.constructor===klass){this._constructing=true;constructor.apply(this,arguments);delete this._constructing}else{if(arguments[0]!==null){return(arguments[0].extend||extend).call(arguments[0],proto)}}}};klass.ancestor=this;klass.extend=this.extend;klass.forEach=this.forEach;klass.implement=this.implement;klass.prototype=proto;klass.toString=this.toString;klass.valueOf=function(type){return(type==="object")?klass:constructor.valueOf()};extend.call(klass,_static);if(typeof klass.init==="function"){klass.init()}return klass};Base.prototype={extend:function(source,value){if(arguments.length>1){var ancestor=this[source];if(ancestor&&(typeof value==="function")&&(!ancestor.valueOf||ancestor.valueOf()!==value.valueOf())&&/\bbase\b/.test(value)){var method=value.valueOf();value=function(){var previous=this.base||Base.prototype.base;this.base=ancestor;var returnValue=method.apply(this,arguments);this.base=previous;return returnValue};value.valueOf=function(type){return(type==="object")?value:method};value.toString=Base.toString}this[source]=value}else{if(source){var extend=Base.prototype.extend;if(!Base._prototyping&&typeof this!=="function"){extend=this.extend||extend}var proto={toSource:null};var hidden=["constructor","toString","valueOf"];for(var i=Base._prototyping?0:1;i<hidden.length;i++){var h=hidden[i];if(source[h]!==proto[h]){extend.call(this,h,source[h])}}for(var key in source){if(!proto[key]){extend.call(this,key,source[key])}}}}return this}};Base=Base.extend({constructor:function(){this.extend(arguments[0])}},{ancestor:Object,version:"1.1",forEach:function(object,block,context){for(var key in object){if(this.prototype[key]===undefined){block.call(context,object[key],key,object)}}},implement:function(){for(var i=0;i<arguments.length;i++){if(typeof arguments[i]==="function"){arguments[i](this.prototype)}else{this.prototype.extend(arguments[i])}}return this},toString:function(){return String(this.valueOf())}});return Base});if(typeof JSON!=="object"){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==="string"){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());(function(window){Gitana=Base.extend({constructor:function(settings){var self=this;if(!settings){settings={}}if(settings.host){settings.baseURL=settings.host+"/proxy"}this.applicationInfo={};this.stackInfo={};var config={clientKey:null,clientSecret:null,baseURL:"/proxy",locale:(Gitana.DEFAULT_LOCALE?Gitana.DEFAULT_LOCALE:null),application:null,loadAppHelper:true,storage:null};if(Gitana.DEFAULT_CONFIG){for(var k in Gitana.DEFAULT_CONFIG){if(Gitana.DEFAULT_CONFIG.hasOwnProperty(k)){config[k]=Gitana.DEFAULT_CONFIG[k]}}}Gitana.copyKeepers(config,Gitana.loadDefaultConfig());Gitana.copyKeepers(config,settings);if(typeof(config.cacheBuster)==="undefined"){config.cacheBuster=true}this.baseURL=config.baseURL;this.locale=config.locale;var options={};if(config.clientKey){options.clientKey=config.clientKey}if(config.clientSecret){options.clientSecret=config.clientSecret}if(this.baseURL){options.baseURL=this.baseURL;options.tokenURL="/oauth/token"}options.requestedScope="api";this.updateOptions=function(o){if(o){Gitana.copyInto(options,o)}};this.resetHttp=function(config){var o={};Gitana.copyInto(o,options);if(config){Gitana.copyInto(o,config)}if(!o.storage){o.storage=this.getOriginalConfiguration().storage}self.http=new Gitana.OAuth2Http(o,o.storage)};this.setAuthInfo=function(authInfo){this.authInfo=authInfo};this.setStackInfo=function(stackInfo){this.stackInfo=stackInfo};this.setApplicationInfo=function(applicationInfo){this.applicationInfo=applicationInfo};this.getOriginalConfiguration=function(){return config};this.getHttpHeaders=function(){var self=this;var headers={};if(self.http&&self.http.getBearerAuthorizationHeader()){headers.Authorization=self.http.getBearerAuthorizationHeader()}return headers}},getAuthInfo:function(){return this.authInfo},getStackInfo:function(){return this.stackInfo},getApplicationInfo:function(){return this.applicationInfo},setLocale:function(locale){this.locale=locale},getLocale:function(){return this.locale},defaultFailureCallback:function(http){if(this.debug){if(typeof console!="undefined"){var message="Received bad http state ("+http.status+")";var stacktrace=null;var json=null;var responseText=http.responseText;if(responseText){json=JSON.parse(responseText);if(json&&json.message){message=message+": "+json.message}}if(json&&json.stacktrace){stacktrace=json.stacktrace}console.log(message);if(stacktrace){console.log(stacktrace)}}}},ajax:function(method,url,contentType,data,headers,successCallback,failureCallback){var _this=this;if(!headers){headers={}}if(method==null){method="GET"}method=method.toUpperCase();var json=false;if(contentType=="application/json"){json=true}if((method==="POST"||method==="PUT")){headers["Content-Type"]=contentType;if(!contentType){Gitana.debug("Performing method: "+method+" but missing content type");return}}var toSend=data;if(json){if(method==="PUT"||method==="POST"){if(!data){data={}}}if(!Gitana.isString(data)){toSend=Gitana.stringify(data)}}if(url.substring(0,1)==="/"){if(!Gitana.isUndefined(window.location)){var u=window.location.protocol+"//"+window.location.host;if(window.location.host.indexOf(":")===-1){if(window.location.port){u+=":"+window.location.port}}url=u+url}else{throw new Error("Relative URL not supported outside of the browser: "+url)}}var config={method:method,url:url,data:toSend,headers:headers,success:successCallback,failure:failureCallback};Gitana.requestCount++;this.http.request(config);return this},gitanaRequest:function(method,url,params,contentType,data,headers,successCallback,failureCallback){if(!params){params={}}var x1=url.indexOf("?");if(x1>-1){var qs=url.substring(x1+1);url=url.substring(0,x1);var parts=qs.split("&");for(var x2=0;x2<parts.length;x2++){var keyValuePair=parts[x2].split("=");params[keyValuePair[0]]=keyValuePair[1]}}if(Gitana.startsWith(url,"/")){url=this.baseURL+url}if(!failureCallback){failureCallback=this.defaultFailureCallback}if(!headers){headers={}}var onSuccess=function(responseObject,xhr){if(successCallback){var arg=responseObject.text;if(contentType==="application/json"){try{arg=new Gitana.Response(JSON.parse(arg))}catch(ex){failureCallback(ex)}}successCallback(arg)}};var onFailure=function(responseObject,xhr){if(failureCallback){var httpError={};if(responseObject&&responseObject.timeout){httpError.statusText="Connection timed out";httpError.status=xhr.status;httpError.errorType="timeout";httpError.message="Connection timed out";httpError.xhr=xhr;httpError.response=responseObject;if(responseObject.info){httpError.info=responseObject.info}}else{httpError.statusText=xhr.statusText;httpError.status=xhr.status;httpError.errorType="http";httpError.xhr=xhr;if(responseObject){httpError.response=responseObject}var message=null;var stacktrace=null;if(contentType==="application/json"){try{var arg=responseObject.text;var obj=new Gitana.Response(JSON.parse(arg));if(obj.message){message=obj.message}if(obj.stacktrace){stacktrace=obj.stacktrace}}catch(e){}}if(message){httpError.message=message}if(stacktrace){httpError.stacktrace=stacktrace}}failureCallback(httpError)}};if(Gitana.HTTP_PARAMS){for(var k in Gitana.HTTP_PARAMS){if(Gitana.HTTP_PARAMS.hasOwnProperty(k)){params[k]=Gitana.HTTP_PARAMS[k]}}}if(Gitana.HTTP_HEADERS){for(var k in Gitana.HTTP_HEADERS){if(Gitana.HTTP_HEADERS.hasOwnProperty(k)){headers[k]=Gitana.HTTP_HEADERS[k]}}}if(Gitana.isEmpty(params.metadata)){params.metadata=true}if(Gitana.isEmpty(params.full)){params.full=true}if(this.locale===null){if(!params.locale){params.locale="default"}}else{if(typeof(this.locale)!=="undefined"){headers["accept-language"]=this.locale;params.locale=this.locale}}var cacheBuster=null;if(this.getOriginalConfiguration().cacheBuster===true){cacheBuster=new Date().getTime()}else{if(typeof(this.getOriginalConfiguration().cacheBuster)==="string"){cacheBuster=this.getOriginalConfiguration().cacheBuster}else{if(typeof(this.getOriginalConfiguration().cacheBuster)==="function"){cacheBuster=this.getOriginalConfiguration().cacheBuster()}}}if(cacheBuster){params.cb=cacheBuster}for(var paramKey in params){var paramValue=params[paramKey];if(Gitana.isFunction(paramValue)){paramValue=paramValue.call()}else{if(Gitana.isString(paramValue)){paramValue=Gitana.escape(paramValue)}else{if(Gitana.isNumber(paramValue)){}else{paramValue=Gitana.escape(Gitana.stringify(paramValue,false))}}}if(url.indexOf("?")>-1){url=url+"&"+paramKey+"="+paramValue}else{url=url+"?"+paramKey+"="+paramValue}}return this.ajax(method,url,contentType,data,headers,onSuccess,onFailure)},gitanaGet:function(url,params,headers,successCallback,failureCallback){return this.gitanaRequest("GET",url,params,"application/json",null,headers,successCallback,failureCallback)},gitanaDownload:function(url,params,successCallback,failureCallback){return this.gitanaRequest("GET",url,params,null,null,{},successCallback,failureCallback)},gitanaPost:function(url,params,jsonData,successCallback,failureCallback){return this.gitanaRequest("POST",url,params,"application/json",jsonData,{},successCallback,failureCallback)},gitanaUpload:function(url,params,contentType,data,successCallback,failureCallback){return this.gitanaRequest("POST",url,params,contentType,data,{},successCallback,failureCallback)},gitanaPut:function(url,params,jsonData,successCallback,failureCallback){return this.gitanaRequest("PUT",url,params,"application/json",jsonData,{},successCallback,failureCallback)},gitanaPatch:function(url,params,jsonData,successCallback,failureCallback){return this.gitanaRequest("PATCH",url,params,"application/json",jsonData,{},successCallback,failureCallback)},gitanaDelete:function(url,params,successCallback,failureCallback){return this.gitanaRequest("DELETE",url,params,"application/json",null,{},successCallback,failureCallback)},getFactory:function(){return new Gitana.ObjectFactory()},authenticate:function(settings,authFailureHandler){var driver=this;var config={code:null,redirectUri:null,username:null,password:null,accessToken:null,ticket:null,cookie:null,ticketMaxAge:null,headers:{}};Gitana.copyKeepers(config,Gitana.loadDefaultConfig());Gitana.copyKeepers(config,settings);if(config.ticket||config.accessToken||config.code){delete config.username;delete config.password;if(config.ticket){delete config.accessToken;delete config.code}else{if(config.accessToken){delete config.ticket;delete config.code}else{if(config.code){delete config.accessToken;delete config.ticket}}}}var platformConfig={key:null,ticket:null,username:null,clientKey:null};Gitana.copyKeepers(platformConfig,this.getOriginalConfiguration());Gitana.copyKeepers(platformConfig,settings);var platformCacheKey=platformConfig.key;if(!platformCacheKey){platformCacheKey=Gitana.determinePlatformCacheKey(platformConfig,true)}if(platformCacheKey){this.platformCacheKey=platformCacheKey}var params={};var headers={};if(config.headers){for(var k in config.headers){headers[k]=config.headers[k]}}var cluster=new Gitana.Cluster(this,{});var applyPlatformCache=function(driver,platform){var platformCacheKey=driver.platformCacheKey;if(platformCacheKey){Gitana.PLATFORM_CACHE(platformCacheKey,platform)}var ticket=driver.getAuthInfo().getTicket();if(ticket){Gitana.PLATFORM_CACHE(ticket,platform)}};var doAuthenticate=function(){var platform=this;if(!config.code&&!config.username&&!config.accessToken&&!config.cookie&&!config.ticket){config.username="guest";config.password="guest"}if(config.code){config.authorizationFlow=Gitana.OAuth2Http.AUTHORIZATION_CODE;driver.resetHttp(config);Gitana.deleteCookie("GITANA_TICKET","/");driver.gitanaGet("/auth/info",params,headers,function(response){var authInfo=new Gitana.AuthInfo(response);driver.setAuthInfo(authInfo);Gitana.deleteCookie("JSESSIONID","/");applyPlatformCache(driver,platform);platform.reload();platform.next()},function(http){if(authFailureHandler){authFailureHandler.call(platform,http)}})}else{if(config.username){config.authorizationFlow=Gitana.OAuth2Http.PASSWORD;driver.resetHttp(config);Gitana.deleteCookie("GITANA_TICKET","/");driver.gitanaGet("/auth/info",params,headers,function(response){var authInfo=new Gitana.AuthInfo(response);driver.setAuthInfo(authInfo);Gitana.deleteCookie("JSESSIONID","/");applyPlatformCache(driver,platform);platform.reload();platform.next()},function(http){if(authFailureHandler){authFailureHandler.call(platform,http)}})}else{if(config.accessToken){config.authorizationFlow=Gitana.OAuth2Http.TOKEN;driver.resetHttp(config);Gitana.deleteCookie("GITANA_TICKET","/");driver.gitanaGet("/auth/info",params,headers,function(response){var authInfo=new Gitana.AuthInfo(response);driver.setAuthInfo(authInfo);Gitana.deleteCookie("JSESSIONID","/");applyPlatformCache(driver,platform);platform.reload();platform.next()},function(http){if(authFailureHandler){authFailureHandler.call(platform,http)}})}else{if(config.cookie){config.authorizationFlow=Gitana.OAuth2Http.COOKIE;driver.resetHttp(config);driver.gitanaGet("/auth/info",params,headers,function(response){var authInfo=new Gitana.AuthInfo(response);driver.setAuthInfo(authInfo);Gitana.deleteCookie("JSESSIONID","/");applyPlatformCache(driver,platform);platform.reload();platform.next()},function(http){if(authFailureHandler){authFailureHandler.call(platform,http)}})}else{if(config.ticket){config.authorizationFlow=Gitana.OAuth2Http.TICKET;driver.resetHttp(config);headers.GITANA_TICKET=config.ticket;driver.gitanaGet("/auth/info",params,headers,function(response){var authInfo=new Gitana.AuthInfo(response);driver.setAuthInfo(authInfo);Gitana.deleteCookie("JSESSIONID","/");applyPlatformCache(driver,platform);platform.reload();platform.next()},function(http){if(authFailureHandler){authFailureHandler.call(platform,http)}})}else{var message="Unsupported authentication flow - you must provide either a username, authorization code, access token or select cookie-based authentication";if(authFailureHandler){authFailureHandler.call(platform,{message:message})}else{throw new Error(message)}}}}}}};var result=this.getFactory().platform(cluster);return Chain(result).then(function(){doAuthenticate.call(this);return false})},reloadAuthInfo:function(callback){var driver=this;driver.gitanaGet("/auth/info",{},{},function(response){var authInfo=new Gitana.AuthInfo(response);driver.setAuthInfo(authInfo);callback()},function(http){callback(null,http)})},clearAuthentication:function(){if(this.http.clearStorage){this.http.clearStorage()}this.resetHttp();Gitana.deleteCookie("GITANA_TICKET","/")},refreshAuthentication:function(callback){this.http.refresh(function(err){callback(err)})},destroy:function(){this.clearAuthentication()}});Gitana.EVERYONE={name:"everyone",type:"GROUP"};var determineChangesetRef=function(node){return"changeset://"+node.getPlatformId()+"/"+node.getRepositoryId()+"/"+node.getSystemMetadata().getChangesetId()};Gitana.toCopyDependencyChain=function(typedID){var array=[];if(typedID.getType()==="node"){array=array.concat(Gitana.toCopyDependencyChain(typedID.getBranch()));array=array.concat({typeId:"changeset",id:typedID.getSystemMetadata().getChangesetId(),ref:determineChangesetRef(typedID)})}else{if(typedID.getType()==="association"){array=array.concat(Gitana.toCopyDependencyChain(typedID.getBranch()));array=array.concat({typeId:"changeset",id:typedID.getSystemMetadata().getChangesetId(),ref:determineChangesetRef(typedID)})}else{if(typedID.getType()==="branch"){array=array.concat(Gitana.toCopyDependencyChain(typedID.getRepository()))}else{if(typedID.getType()==="platform"){}else{if(typedID.getType()==="stack"){array=array.concat(Gitana.toCopyDependencyChain(typedID.getPlatform()))}else{if(typedID.getType()==="project"){array=array.concat(Gitana.toCopyDependencyChain(typedID.getPlatform()))}else{array=array.concat(Gitana.toCopyDependencyChain(typedID.getPlatform()))}}}}}}array.push(Gitana.toDependencyObject(typedID));return array};Gitana.toDependencyObject=function(typedID){return{typeId:typedID.getType(),id:typedID.getId(),ref:typedID.ref()}};Gitana.TypedIDConstants={};Gitana.TypedIDConstants.TYPE_APPLICATION="application";Gitana.TypedIDConstants.TYPE_EMAIL="email";Gitana.TypedIDConstants.TYPE_EMAIL_PROVIDER="emailprovider";Gitana.TypedIDConstants.TYPE_REGISTRATION="registration";Gitana.TypedIDConstants.TYPE_PAGE_RENDITION="pageRendition";Gitana.TypedIDConstants.TYPE_SETTINGS="settings";Gitana.TypedIDConstants.TYPE_MESSAGE="message";Gitana.TypedIDConstants.TYPE_CLUSTER="cluster";Gitana.TypedIDConstants.TYPE_JOB="job";Gitana.TypedIDConstants.TYPE_LOG_ENTRY="logEntry";Gitana.TypedIDConstants.TYPE_DIRECTORY="directory";Gitana.TypedIDConstants.TYPE_IDENTITY="identity";Gitana.TypedIDConstants.TYPE_CONNECTION="connection";Gitana.TypedIDConstants.TYPE_DOMAIN="domain";Gitana.TypedIDConstants.TYPE_DOMAIN_GROUP="group";Gitana.TypedIDConstants.TYPE_DOMAIN_USER="user";Gitana.TypedIDConstants.TYPE_PLATFORM="platform";Gitana.TypedIDConstants.TYPE_ACCESS_POLICY="accessPolicy";Gitana.TypedIDConstants.TYPE_AUTHENTICATION_GRANT="authenticationGrant";Gitana.TypedIDConstants.TYPE_BILLING_PROVIDERS_CONFIGURATION="billingProviderConfiguration";Gitana.TypedIDConstants.TYPE_DEPLOYMENT_RECEIVER="deployment-receiver";Gitana.TypedIDConstants.TYPE_DEPLOYMENT_PACKAGE="deployment-package";Gitana.TypedIDConstants.TYPE_DEPLOYMENT_STRATEGY="deployment-strategy";Gitana.TypedIDConstants.TYPE_DEPLOYMENT_TARGET="deployment-target";Gitana.TypedIDConstants.TYPE_CLIENT="client";Gitana.TypedIDConstants.TYPE_DESCRIPTOR="externalServiceDescriptor";Gitana.TypedIDConstants.TYPE_STACK="stack";Gitana.TypedIDConstants.TYPE_PROJECT="project";Gitana.TypedIDConstants.TYPE_SCHEDULED_WORK="scheduled-work";Gitana.TypedIDConstants.TYPE_REPORT="report";Gitana.TypedIDConstants.TYPE_WORKFLOW_INSTANCE="workflowInstance";Gitana.TypedIDConstants.TYPE_WORKFLOW_MODEL="workflowModel";Gitana.TypedIDConstants.TYPE_WORKFLOW_TASK="workflowTask";Gitana.TypedIDConstants.TYPE_WORKFLOW_COMMENT="workflowComment";Gitana.TypedIDConstants.TYPE_UICONFIG="uiconfig";Gitana.TypedIDConstants.TYPE_VIEW="view";Gitana.TypedIDConstants.TYPE_REGISTRAR="registrar";Gitana.TypedIDConstants.TYPE_METER="meter";Gitana.TypedIDConstants.TYPE_PLAN="plan";Gitana.TypedIDConstants.TYPE_TENANT="tenant";Gitana.TypedIDConstants.TYPE_REPOSITORY="repository";Gitana.TypedIDConstants.TYPE_ASSOCIATION="association";Gitana.TypedIDConstants.TYPE_BRANCH="branch";Gitana.TypedIDConstants.TYPE_CHANGESET="changeset";Gitana.TypedIDConstants.TYPE_NODE="node";Gitana.TypedIDConstants.TYPE_RELEASE="release";Gitana.TypedIDConstants.TYPE_MERGE_CONFLICT="mergeConflict";Gitana.TypedIDConstants.TYPE_DELETION="deletion";Gitana.TypedIDConstants.TYPE_VAULT="vault";Gitana.TypedIDConstants.TYPE_ARCHIVE="archive";Gitana.TypedIDConstants.TYPE_WEB_HOST="webhost";Gitana.TypedIDConstants.TYPE_AUTO_CLIENT_MAPPING="autoClientMapping";Gitana.TypedIDConstants.TYPE_TRUSTED_DOMAIN_MAPPING="trustedDomainMapping";Gitana.TypedIDConstants.TYPE_DEPLOYED_APPLICATION="deployedApplication";Gitana.handleJobCompletion=function(chain,cluster,jobId,synchronous,reportFn){var jobFinalizer=function(){return Chain(cluster).readJob(jobId).then(function(){if(reportFn){reportFn(this)}if(!synchronous||(synchronous&&(this.getState()=="FINISHED"||this.getState()=="ERROR"))){chain.loadFrom(this);chain.next()}else{window.setTimeout(jobFinalizer,1000)}})};window.setTimeout(jobFinalizer,1000)};Gitana.loadDefaultConfig=function(){};Gitana.MemoryCache=function(){var cache={};return function(k,v){if(!Gitana.isUndefined(v)){if(v){cache[k]=v}else{delete cache[k]}}if(k==="clear"){var za=[];for(var z in cache){za.push(z)}for(var i=0;i<za.length;i++){delete cache[za[i]]}}return cache[k]}};Gitana.PLATFORM_CACHE=Gitana.MemoryCache();Gitana.determinePlatformCacheKey=function(config,fallbackToDefault){var cacheKey=null;if(config.ticket){cacheKey=config.ticket}else{if(config.clientKey&&config.username){cacheKey=config.clientKey+":"+config.username}else{if(fallbackToDefault){cacheKey="default"}}}return cacheKey};Gitana.connect=function(config,callback){if(Gitana.isFunction(config)){callback=config;config=null}var missingConfig=false;if(!config){config={};missingConfig=true}if(Gitana.isString(config)){config={key:config}}if(typeof(config.invalidatePlatformCache)==="undefined"){config.invalidatePlatformCache=false}if(!config.key){config.key=Gitana.determinePlatformCacheKey(config,missingConfig)}if(typeof(config.loadAppHelper)==="undefined"){config.loadAppHelper=true}var setupContext=function(platformCacheKey){if(config.loadAppHelper){var appConfig={application:(config.application?config.application:null),appCacheKey:null};Gitana.copyKeepers(appConfig,Gitana.loadDefaultConfig());Gitana.copyKeepers(appConfig,this.getDriver().getOriginalConfiguration());Gitana.copyKeepers(appConfig,config);if(appConfig.application){var appSettings={application:appConfig.application};if(appConfig.appCacheKey){appSettings.appCacheKey=appConfig.appCacheKey}if(!appSettings.appCacheKey){if(platformCacheKey){appSettings.appCacheKey=platformCacheKey+"_"+appConfig.application}}this.app(appSettings,function(err){if(callback){callback.call(this,err)}})}else{if(callback){callback.call(this)}}}else{if(callback){callback.call(this)}}};if(config.key&&config.invalidatePlatformCache){Gitana.disconnect(config.key)}var platform=null;if(config.key){platform=Gitana.PLATFORM_CACHE(config.key)}if(platform){platform=Chain(new Gitana.Platform(platform.getCluster(),platform));setupContext.call(platform,config.key);return platform}if(missingConfig){config.cookie=true}return new Gitana(config).authenticate(config,function(err){if(err&&config.key){Gitana.disconnect(config.key)}if(callback){callback.call(this,err)}}).then(function(){setupContext.call(this,config.key)})};Gitana.disconnect=function(key,expireAccessToken){if(!key){key="default"}var platform=Gitana.PLATFORM_CACHE(key);if(platform){if(expireAccessToken){platform.getDriver().gitanaPost("/auth/expire",{},{},function(){},function(err){})}var badKeys=[];for(var k in Gitana.APPS){if(k.indexOf(key+"_")==0){badKeys.push(k)}}for(var i=0;i<badKeys.length;i++){delete Gitana.APPS[badKeys[i]]}var ticket=platform.getDriver().getAuthInfo().getTicket();if(ticket){Gitana.PLATFORM_CACHE(ticket,null)}Gitana.PLATFORM_CACHE(key,null);platform.getDriver().destroy()}};Gitana.requestCount=0;Gitana.VERSION="1.0.331";if(window){window.Gitana=Gitana}Gitana.escape=function(text){if(text){text=encodeURIComponent(text)}return text};Gitana.reset=function(){Gitana.HTTP_TIMEOUT=120000;Gitana.PLATFORM_CACHE("clear");Gitana.deleteCookie("GITANA_TICKET")};Gitana.__INSERT_MARKER=null;Gitana.PREFER_GET_OVER_POST=false;Gitana.XHR_WITH_CREDENTIALS=true;Gitana.HTTP_X_CLOUDCMS_ORIGIN_HEADER=true;Gitana.REFRESH_TOKEN_FAILURE_FN=function(http){http.clearStorage();Gitana.deleteCookie("GITANA_TICKET")};Gitana.HTTP_PARAMS={};Gitana.HTTP_HEADERS={};Gitana.configureRequestHeaders=function(method,url,headers,options){};Gitana.CSRF_TOKEN=null;Gitana.CSRF_COOKIE_NAMES=["CSRF-TOKEN","XSRF-TOKEN"];Gitana.CSRF_HEADER_NAME="X-CSRF-TOKEN";Gitana.DEFAULT_LOCALE=undefined;Gitana.defaultErrorHandler=function(err){if(console&&console.warn){console.warn(err)}};Gitana.OAUTH2_TOKEN_REQUEST_HEADERS={}})(window);(function(global){Gitana.Error=function(){};Gitana.Error.prototype=new Error();Gitana.Error.prototype.constructor=Gitana.Error}(this));(function(window){Gitana.WorkQueue=function(maxSize){if(!maxSize){maxSize=3}var blockExecution=false;var pendingWorkFns=[];var activeCount=0;var processWork=function(){if(blockExecution){return}blockExecution=true;var process=true;do{if(pendingWorkFns.length===0){process=false}if(activeCount>=maxSize){process=false}if(process){activeCount++;var executionFn=function(workFn){return function(){workFn(function(){activeCount--;window.setTimeout(processWork)})}}(pendingWorkFns.splice(0,1)[0]);window.setTimeout(executionFn)}}while(process);blockExecution=false};return function(workFn){pendingWorkFns.push(workFn);window.setTimeout(processWork)}}})(window);(function(global){Gitana.HTTP_TIMEOUT=120000;Gitana.HTTP_TIMEOUT_FN=function(xhr,method,url){};Gitana.HTTP_WORK_QUEUE_SIZE=100000;Gitana.HTTP_XHR_FACTORY=function(){return null};Gitana.Http=Base.extend({constructor:function(){var enqueue=new Gitana.WorkQueue(Gitana.HTTP_WORK_QUEUE_SIZE);this.invoke=function(options){var self=this;enqueue(function(options){return function(workDoneFn){var method=options.method||"GET";var url=options.url;var data=options.data;var headers=options.headers||{};var success=options.success||function(){};var failure=options.failure||function(){};var _success=success;success=function(){workDoneFn();var args=Array.prototype.slice.call(arguments);_success.apply(self,args)};var _failure=failure;failure=function(){workDoneFn();var args=Array.prototype.slice.call(arguments);_failure.apply(self,args)};headers.Accept="application/json";var csrfToken=Gitana.CSRF_TOKEN;if(!csrfToken){for(var t=0;t<Gitana.CSRF_COOKIE_NAMES.length;t++){var cookieName=Gitana.CSRF_COOKIE_NAMES[t];var cookieValue=Gitana.readCookie(cookieName);if(cookieValue){csrfToken=cookieValue;break}}}if(csrfToken){headers[Gitana.CSRF_HEADER_NAME]=csrfToken}if(typeof(Gitana.XHR_CACHE_FN)!=="undefined"&&Gitana.XHR_CACHE_FN!==null){var responseObject=Gitana.XHR_CACHE_FN({method:method,url:url,headers:headers});if(responseObject){return success(responseObject)}}if(Gitana.HTTP_X_CLOUDCMS_ORIGIN_HEADER){if(typeof(window)!=="undefined"){if(window.location&&window.location.origin){headers["X-CLOUDCMS-ORIGIN"]=window.location.origin}}}var xhr=Gitana.Http.Request();if(Gitana.XHR_WITH_CREDENTIALS){xhr.withCredentials=true}var httpTimeoutFn=function(){xhr.abort();if(Gitana.HTTP_TIMEOUT_FN){Gitana.HTTP_TIMEOUT_FN(xhr,method,url)}var responseObject={timeout:true,text:"Http Request timed out",info:{method:method,url:url}};failure(responseObject,xhr);return false};var httpTimeoutHolder=null;if(Gitana.HTTP_TIMEOUT>0){httpTimeoutHolder=setTimeout(httpTimeoutFn,Gitana.HTTP_TIMEOUT)}xhr.onreadystatechange=function(){if(xhr.readyState===4){var regex=/^(.*?):\s*(.*?)\r?$/mg,requestHeaders=headers,responseHeaders={},responseHeadersString="",match;if(!!xhr.getAllResponseHeaders){responseHeadersString=xhr.getAllResponseHeaders();while((match=regex.exec(responseHeadersString))){responseHeaders[match[1]]=match[2]}}else{if(!!xhr.getResponseHeaders){responseHeadersString=xhr.getResponseHeaders();for(var i=0,len=responseHeadersString.length;i<len;++i){responseHeaders[responseHeadersString[i][0]]=responseHeadersString[i][1]}}}var includeXML=false;if("Content-Type" in responseHeaders){if(responseHeaders["Content-Type"]=="text/xml"){includeXML=true}}var responseObject={text:xhr.responseText,xml:(includeXML?xhr.responseXML:""),requestHeaders:requestHeaders,responseHeaders:responseHeaders};if(xhr.status===0){}if((xhr.status>=200&&xhr.status<=226)||xhr.status==304){if(httpTimeoutHolder){clearTimeout(httpTimeoutHolder)}if(typeof(Gitana.XHR_CACHE_FN)!=="undefined"&&Gitana.XHR_CACHE_FN!==null){Gitana.XHR_CACHE_FN({method:method,url:url,headers:headers},responseObject)}success(responseObject,xhr)}else{if(xhr.status>=400){if(httpTimeoutHolder){clearTimeout(httpTimeoutHolder)}failure(responseObject,xhr)}else{if(xhr.status>=300&&xhr.status<=303){if(httpTimeoutHolder){clearTimeout(httpTimeoutHolder)}failure(responseObject,xhr)}}}}};if(Gitana.configureRequestHeaders){Gitana.configureRequestHeaders(method,url,headers,options)}xhr.open(method,url,true);xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");for(var header in headers){xhr.setRequestHeader(header,headers[header])}try{xhr.send(data)}catch(e){console.log(e)}}}(options))}},request:function(options){return this.invoke(options)}});Gitana.Http.toQueryString=function(params){var queryString="";if(params){for(var k in params){if(queryString.length>0){queryString+="&"}var val=null;if(params[k]){val=params[k];val=Gitana.Http.URLEncode(val)}if(val){queryString+=k+"="+val}}}return queryString};Gitana.Http.Request=function(){var XHR=null;if(Gitana.HTTP_XHR_FACTORY){XHR=Gitana.HTTP_XHR_FACTORY()}if(!XHR){if(typeof global.Titanium!=="undefined"&&typeof global.Titanium.Network.createHTTPClient!=="undefined"){XHR=global.Titanium.Network.createHTTPClient()}else{XHR=new global.XMLHttpRequest()}}return XHR};var Hash=function(){};Hash.prototype={join:function(string){string=string||"";return this.values().join(string)},keys:function(){var i,arr=[],self=this;for(i in self){if(self.hasOwnProperty(i)){arr.push(i)}}return arr},values:function(){var i,arr=[],self=this;for(i in self){if(self.hasOwnProperty(i)){arr.push(self[i])}}return arr},shift:function(){throw"not implemented"},unshift:function(){throw"not implemented"},push:function(){throw"not implemented"},pop:function(){throw"not implemented"},sort:function(){throw"not implemented"},ksort:function(func){var self=this,keys=self.keys(),i,value,key;if(func==undefined){keys.sort()}else{keys.sort(func)}for(i=0;i<keys.length;i++){key=keys[i];value=self[key];delete self[key];self[key]=value}return self},toObject:function(){var obj={},i,self=this;for(i in self){if(self.hasOwnProperty(i)){obj[i]=self[i]}}return obj}};var Collection=function(obj){var args=arguments,args_callee=args.callee,args_length=args.length,i,collection=this;if(!(this instanceof args_callee)){return new args_callee(obj)}for(i in obj){if(obj.hasOwnProperty(i)){collection[i]=obj[i]}}return collection};Collection.prototype=new Hash();Gitana.Http.URI=function(url){var args=arguments,args_callee=args.callee,parsed_uri,scheme,host,port,path,query,anchor,parser=/^([^:\/?#]+?:\/\/)*([^\/:?#]*)?(:[^\/?#]*)*([^?#]*)(\?[^#]*)?(#(.*))*/,uri=this;if(!(this instanceof args_callee)){return new args_callee(url)}uri.scheme="";uri.host="";uri.port="";uri.path="";uri.query=new Gitana.Http.QueryString();uri.anchor="";if(url!==null){parsed_uri=url.match(parser);scheme=parsed_uri[1];host=parsed_uri[2];port=parsed_uri[3];path=parsed_uri[4];query=parsed_uri[5];anchor=parsed_uri[6];scheme=(scheme!==undefined)?scheme.replace("://","").toLowerCase():"http";port=(port?port.replace(":",""):(scheme==="https"?"443":"80"));scheme=(scheme=="http"&&port==="443"?"https":scheme);query=query?query.replace("?",""):"";anchor=anchor?anchor.replace("#",""):"";if((scheme==="https"&&port!=="443")||(scheme==="http"&&port!=="80")){host=host+":"+port}uri.scheme=scheme;uri.host=host;uri.port=port;uri.path=path||"/";uri.query.setQueryParams(query);uri.anchor=anchor||""}};Gitana.Http.URI.prototype={scheme:"",host:"",port:"",path:"",query:"",anchor:"",toString:function(){var self=this,query=self.query+"";return self.scheme+"://"+self.host+self.path+(query!=""?"?"+query:"")+(self.anchor!==""?"#"+self.anchor:"")}};Gitana.Http.QueryString=function(obj){var args=arguments,args_callee=args.callee,args_length=args.length,i,querystring=this;if(!(this instanceof args_callee)){return new args_callee(obj)}if(obj!=undefined){for(i in obj){if(obj.hasOwnProperty(i)){querystring[i]=obj[i]}}}return querystring};Gitana.Http.QueryString.prototype=new Collection();Gitana.Http.QueryString.prototype.toString=function(){var i,self=this,q_arr=[],ret="",val="",encode=Gitana.Http.URLEncode;self.ksort();for(i in self){if(self.hasOwnProperty(i)){if(i!=undefined&&self[i]!=undefined){val=encode(i)+"="+encode(self[i]);q_arr.push(val)}}}if(q_arr.length>0){ret=q_arr.join("&")}return ret};Gitana.Http.QueryString.prototype.setQueryParams=function(query){var args=arguments,args_length=args.length,i,query_array,query_array_length,querystring=this,key_value;if(args_length==1){if(typeof query==="object"){for(i in query){if(query.hasOwnProperty(i)){querystring[i]=query[i]}}}else{if(typeof query==="string"){query_array=query.split("&");for(i=0,query_array_length=query_array.length;i<query_array_length;i++){key_value=query_array[i].split("=");querystring[key_value[0]]=key_value[1]}}}}else{for(i=0;i<arg_length;i+=2){querystring[args[i]]=args[i+1]}}};Gitana.Http.URLEncode=function(string){function hex(code){var hex=code.toString(16).toUpperCase();if(hex.length<2){hex=0+hex}return"%"+hex}if(!string){return""}string=string+"";var reserved_chars=/[ \r\n!*"'();:@&=+$,\/?%#\[\]<>{}|`^\\\u0080-\uffff]/,str_len=string.length,i,string_arr=string.split(""),c;for(i=0;i<str_len;i++){c=string_arr[i].match(reserved_chars);if(c){c=c[0].charCodeAt(0);if(c<128){string_arr[i]=hex(c)}else{if(c<2048){string_arr[i]=hex(192+(c>>6))+hex(128+(c&63))}else{if(c<65536){string_arr[i]=hex(224+(c>>12))+hex(128+((c>>6)&63))+hex(128+(c&63))}else{if(c<2097152){string_arr[i]=hex(240+(c>>18))+hex(128+((c>>12)&63))+hex(128+((c>>6)&63))+hex(128+(c&63))}}}}}}return string_arr.join("")};Gitana.Http.URLDecode=function(string){if(!string){return""}return string.replace(/%[a-fA-F0-9]{2}/ig,function(match){return String.fromCharCode(parseInt(match.replace("%",""),16))})}}(this));(function(global){Gitana.OAuth2Http=Gitana.Http.extend({constructor:function(options,storage){var self=this;if(storage===null||typeof(storage)==="string"){storage=new Gitana.OAuth2Http.Storage(storage)}this.cookieMode=null;this.ticketMode=null;this.error=null;this.errorDescription=null;this.errorUri=null;var tokenURL="/oauth/token";if(options.tokenURL){tokenURL=options.tokenURL}var baseURL=null;if(options.baseURL){baseURL=options.baseURL}var clientKey=options.clientKey;var clientSecret=options.clientSecret;this.authorizationFlow=options.authorizationFlow||Gitana.OAuth2Http.AUTHORIZATION_CODE;if(options.requestedScope){this.requestedScope=options.requestedScope}if(this.authorizationFlow==Gitana.OAuth2Http.AUTHORIZATION_CODE){this.code=options.code;this.redirectUri=options.redirectUri}if(this.authorizationFlow==Gitana.OAuth2Http.PASSWORD){this.username=options.username;if(options.password){this.password=options.password}else{this.password=""}}if(this.authorizationFlow==Gitana.OAuth2Http.COOKIE){this.cookieMode=true}if(this.authorizationFlow==Gitana.OAuth2Http.TICKET){this.ticketMode=options.ticket}this.ticketMaxAge=options.ticketMaxAge;this.clearStorage=function(){storage.clear()};this.accessToken=function(value){return storage.poke("accessToken",value)};this.refreshToken=function(value){return storage.poke("refreshToken",value)};this.grantedScope=function(value){return storage.poke("grantedScope",value)};this.expiresIn=function(value){return storage.poke("expiresIn",value)};this.grantTime=function(value){return storage.poke("grantTime",value)};this.getClientAuthorizationHeader=function(){var basicString=clientKey+":";if(clientSecret){basicString+=clientSecret}return"Basic "+Gitana.btoa(basicString)};this.getBearerAuthorizationHeader=function(){return"Bearer "+self.accessToken()};this.getPrefixedTokenURL=function(){return this.getPrefixedURL(tokenURL)};this.getPrefixedURL=function(url){var rebasedURL=url;if(baseURL&&Gitana.startsWith(url,"/")){rebasedURL=baseURL+url}return rebasedURL};if(this.authorizationFlow==Gitana.OAuth2Http.TOKEN){var existingAccessToken=this.accessToken();if(existingAccessToken!==options.accessToken){storage.clear()}this.accessToken(options.accessToken)}this.base()},request:function(options){var self=this;var doGetAccessToken=function(success,failure){var onSuccess=function(response,xhr){var object=JSON.parse(response.text);if(object.error){self.error=object.error;self.errorDescription=object.error_description;self.errorUri=object.error_uri;return failure(response,xhr)}var _accessToken=object.access_token;var _refreshToken=object.refresh_token;var _expiresIn=object.expires_in;var _grantedScope=object.scope;var _grantTime=new Date().getTime();self.clearStorage();self.accessToken(_accessToken);self.refreshToken(_refreshToken);self.expiresIn(_expiresIn);self.grantedScope(_grantedScope);self.grantTime(_grantTime);success()};var onFailure=function(http,xhr){failure(http,xhr)};var o={success:onSuccess,failure:onFailure,headers:{},url:self.getPrefixedTokenURL(),method:Gitana.OAuth2Http.TOKEN_METHOD};if(Gitana.OAUTH2_TOKEN_REQUEST_HEADERS){for(var k in Gitana.OAUTH2_TOKEN_REQUEST_HEADERS){o.headers[k]=Gitana.OAUTH2_TOKEN_REQUEST_HEADERS[k]}}o.headers.Authorization=self.getClientAuthorizationHeader();var qs={};if(self.ticketMaxAge){qs.ticketMaxAge=self.ticketMaxAge}if("post"===Gitana.OAuth2Http.TOKEN_METHOD.toLowerCase()){o.headers["Content-Type"]="application/x-www-form-urlencoded";var urlEncodedTokens={};urlEncodedTokens.grant_type=self.authorizationFlow;if(self.requestedScope){urlEncodedTokens.scope=self.requestedScope}if(self.authorizationFlow===Gitana.OAuth2Http.AUTHORIZATION_CODE){urlEncodedTokens.code=self.code;if(self.redirectUri){urlEncodedTokens.redirect_uri=self.redirectUri}}else{if(self.authorizationFlow===Gitana.OAuth2Http.PASSWORD){urlEncodedTokens.username=self.username;urlEncodedTokens.password=self.password}}o.data=""+Gitana.Http.toQueryString(urlEncodedTokens)}else{qs.grant_type=self.authorizationFlow;if(self.requestedScope){qs.scope=self.requestedScope}if(self.authorizationFlow===Gitana.OAuth2Http.AUTHORIZATION_CODE){qs.code=self.code;if(self.redirectUri){qs.redirect_uri=self.redirectUri}}else{if(self.authorizationFlow===Gitana.OAuth2Http.PASSWORD){qs.username=self.username;qs.password=self.password}}}var queryString=Gitana.Http.toQueryString(qs);if(queryString){if(o.url.indexOf("?")>-1){o.url=o.url+"&"+queryString}else{o.url=o.url+"?"+queryString}}self.invoke(o)};if(typeof(Gitana.REFRESH_TOKEN_LOCKS)==="undefined"){Gitana.REFRESH_TOKEN_LOCKS={}}if(typeof(Gitana.REFRESH_TOKEN_LOCK_REATTEMPT_MS)==="undefined"){Gitana.REFRESH_TOKEN_LOCK_REATTEMPT_MS=75}var waitForPendingRefresh=function(key,oldAccessToken){setTimeout(function(){if(Gitana.REFRESH_TOKEN_LOCKS[key]){return waitForPendingRefresh()}var newAccessToken=self.accessToken();var autoAttemptRefresh=(newAccessToken===oldAccessToken);doCall(autoAttemptRefresh)},Gitana.REFRESH_TOKEN_LOCK_REATTEMPT_MS)};var doRefreshAccessToken=function(success,failure){var key=self.refreshToken();var oldAccessToken=self.accessToken();if(Gitana.REFRESH_TOKEN_LOCKS[key]){return waitForPendingRefresh(key,oldAccessToken)}Gitana.REFRESH_TOKEN_LOCKS[key]=true;_doRefreshAccessToken(function(response){delete Gitana.REFRESH_TOKEN_LOCKS[key];success(response)},function(http,xhr){delete Gitana.REFRESH_TOKEN_LOCKS[key];failure(http,xhr)})};var _doRefreshAccessToken=function(success,failure){var onSuccess=function(response){var object=JSON.parse(response.text);if(response.error){self.error=object.error;self.errorDescription=object.error_description;self.errorUri=object.error_uri}else{var _accessToken=object.access_token;var _refreshToken=object.refresh_token;var _expiresIn=object.expires_in;var _grantTime=new Date().getTime();var _grantedScope=self.grantedScope();self.clearStorage();self.accessToken(_accessToken);self.refreshToken(_refreshToken);self.expiresIn(_expiresIn);self.grantedScope(_grantedScope);self.grantTime(_grantTime)}success(response)};var onFailure=function(http,xhr){Gitana.REFRESH_TOKEN_FAILURE_FN(self,http,xhr);failure(http,xhr)};var o={success:onSuccess,failure:onFailure,headers:{},url:self.getPrefixedTokenURL(),method:Gitana.OAuth2Http.TOKEN_METHOD};if(Gitana.OAUTH2_TOKEN_REQUEST_HEADERS){for(var k in Gitana.OAUTH2_TOKEN_REQUEST_HEADERS){o.headers[k]=Gitana.OAUTH2_TOKEN_REQUEST_HEADERS[k]}}o.headers.Authorization=self.getClientAuthorizationHeader();var qs={};if(self.ticketMaxAge){qs.ticketMaxAge=self.ticketMaxAge}if("post"===Gitana.OAuth2Http.TOKEN_METHOD.toLowerCase()){o.headers["Content-Type"]="application/x-www-form-urlencoded";var urlEncodedTokens={};urlEncodedTokens.grant_type="refresh_token";urlEncodedTokens.refresh_token=self.refreshToken();if(self.requestedScope){urlEncodedTokens.scope=self.requestedScope}o.data=""+Gitana.Http.toQueryString(urlEncodedTokens)}else{qs.grant_type="refresh_token";qs.refresh_token=self.refreshToken();if(self.requestedScope){qs.scope=self.requestedScope}}var queryString=Gitana.Http.toQueryString(qs);if(queryString){if(o.url.indexOf("?")>-1){o.url=o.url+"&"+queryString}else{o.url=o.url+"?"+queryString}}self.invoke(o)};var doCall=function(autoAttemptRefresh){var successHandler=function(response){options.success(response)};var failureHandler=function(http,xhr){if(autoAttemptRefresh){var notJson=false;var isInvalidToken=false;if(http.text){var responseData={};try{responseData=JSON.parse(http.text)}catch(e){console.log("Error response is not json");console.log(e);console.log(http.text);notJson=true}if(responseData.error){if(responseData.error==="invalid_token"){isInvalidToken=true}}}var is401=(http&&http.code==401)||(xhr&&xhr.status==401);var is400=(http&&http.code==400)||(xhr&&xhr.status==400);var is403=(http&&http.code==403)||(xhr&&xhr.status==403);var isTimeout=(http&&http.timeout)||(xhr&&xhr.timeout);var is5xx=(http&&http.code>=500)||(xhr&&xhr.status>=500);var attemptRefresh=false;if(isInvalidToken){attemptRefresh=true}if(notJson&&!is5xx&&!isTimeout){attemptRefresh=true}if(attemptRefresh){attemptRefresh=(self.refreshToken()||self.cookieMode)}if(attemptRefresh){doRefreshAccessToken(function(){doCall(false)},function(){options.failure(http,xhr)})}else{options.failure(http,xhr)}}else{options.failure(http,xhr)}};var o={};Gitana.copyInto(o,options);o.success=successHandler;o.failure=failureHandler;if(!o.headers){o.headers={}}if(Gitana.OAUTH2_TOKEN_REQUEST_HEADERS){for(var k in Gitana.OAUTH2_TOKEN_REQUEST_HEADERS){o.headers[k]=Gitana.OAUTH2_TOKEN_REQUEST_HEADERS[k]}}if(!self.cookieMode&&!self.ticketMode){o.headers.Authorization=self.getBearerAuthorizationHeader()}if(self.ticketMode){o.headers.GITANA_TICKET=encodeURIComponent(self.ticketMode)}o.url=self.getPrefixedURL(o.url);self.invoke(o)};var forceRefresh=false;if(self.accessToken()){var grantTime=self.grantTime();if(grantTime){var expiresIn=self.expiresIn();if(expiresIn){var expirationTimeMs=self.grantTime()+(self.expiresIn()*1000);var nowTimeMs=new Date().getTime();var timeRemainingMs=expirationTimeMs-nowTimeMs;if(timeRemainingMs<=0){}else{}if(timeRemainingMs<=20000){forceRefresh=true}}}}if((!self.accessToken()||forceRefresh)&&!this.cookieMode&&!this.ticketMode){if(!self.refreshToken()){doGetAccessToken(function(){doCall(true)},function(http,xhr){options.failure(http,xhr)})}else{doRefreshAccessToken(function(){doCall(true)},function(http,xhr){options.failure(http,xhr)})}}else{doCall(true)}},refresh:function(callback){var self=this;var currentAccessToken=self.accessToken();var currentRefreshToken=self.refreshToken();if(!currentRefreshToken){return callback({message:"The driver does not have a refresh token, cannot refresh"})}var onSuccess=function(response){var object=JSON.parse(response.text);if(object.error){self.error=object.error;self.errorDescription=object.error_description;self.errorUri=object.error_uri;return callback({error:self.error,message:self.errorDescription})}else{var _accessToken=object.access_token;var _refreshToken=object.refresh_token;var _expiresIn=object.expires_in;var _grantTime=new Date().getTime();var _grantedScope=self.grantedScope();self.clearStorage();self.accessToken(_accessToken);self.refreshToken(_refreshToken);self.expiresIn(_expiresIn);self.grantedScope(_grantedScope);self.grantTime(_grantTime);callback()}};var onFailure=function(http,xhr){if(Gitana.REFRESH_TOKEN_FAILURE_FN){Gitana.REFRESH_TOKEN_FAILURE_FN(self,http,xhr)}self.clearStorage();callback({message:"Unable to refresh access token"})};var o={success:onSuccess,failure:onFailure,headers:{},url:self.getPrefixedTokenURL(),method:Gitana.OAuth2Http.TOKEN_METHOD};if(Gitana.OAUTH2_TOKEN_REQUEST_HEADERS){for(var k in Gitana.OAUTH2_TOKEN_REQUEST_HEADERS){o.headers[k]=Gitana.OAUTH2_TOKEN_REQUEST_HEADERS[k]}}o.headers.Authorization=self.getClientAuthorizationHeader();var qs={};if(self.ticketMaxAge){qs.ticketMaxAge=self.ticketMaxAge}if("post"===Gitana.OAuth2Http.TOKEN_METHOD.toLowerCase()){o.headers["Content-Type"]="application/x-www-form-urlencoded";var urlEncodedTokens={};urlEncodedTokens.grant_type="refresh_token";urlEncodedTokens.refresh_token=self.refreshToken();if(self.requestedScope){urlEncodedTokens.scope=self.requestedScope}o.data=""+Gitana.Http.toQueryString(urlEncodedTokens)}else{qs.grant_type="refresh_token";qs.refresh_token=self.refreshToken();if(self.requestedScope){qs.scope=self.requestedScope}}var queryString=Gitana.Http.toQueryString(qs);if(queryString){if(o.url.indexOf("?")>-1){o.url=o.url+"&"+queryString}else{o.url=o.url+"?"+queryString}}self.invoke(o)}});Gitana.OAuth2Http.Storage=function(scope){var memoryStorage=function(){var memory={};var m={};m.removeItem=function(key){delete memory[key]};m.getItem=function(key){return memory[key]};m.setItem=function(key,value){memory[key]=value};return m}();var supportsLocalStorage=function(){try{return"localStorage" in window&&window.localStorage!==null}catch(e){return false}};var supportsSessionStorage=function(){try{return"sessionStorage" in window&&window.sessionStorage!==null}catch(e){return false}};var acquireStorage=function(){var storage=null;if(scope=="session"&&supportsSessionStorage()){storage=sessionStorage}else{if(scope=="local"&&supportsLocalStorage()){storage=localStorage}else{storage=memoryStorage}}return storage};var r={};r.clear=function(){acquireStorage().setItem("gitanaAuthState","");acquireStorage().removeItem("gitanaAuthState")};r.poke=function(key,value){var state={};var stateString=acquireStorage().getItem("gitanaAuthState");if(stateString&&stateString!==""){state=JSON.parse(stateString)}var touch=false;if(typeof(value)!=="undefined"&&value!==null){state[key]=value;touch=true}else{if(value===null){delete state[key];touch=true}}if(touch){acquireStorage().setItem("gitanaAuthState",JSON.stringify(state))}return state[key]};return r}}(this));Gitana.OAuth2Http.PASSWORD="password";Gitana.OAuth2Http.AUTHORIZATION_CODE="authorization_code";Gitana.OAuth2Http.TOKEN="token";Gitana.OAuth2Http.COOKIE="cookie";Gitana.OAuth2Http.TICKET="ticket";Gitana.OAuth2Http.TOKEN_METHOD="POST";(function(window){Chain=function(object,skipAutoTrap){if(!object){object={}}var proxiedObject=Chain.proxy(object);proxiedObject.__queue=(function(){var queue=[];return function(x){if(x){if(x=="empty"){queue=[]}else{queue.push(x)}}return queue}})();proxi