This commit is contained in:
msyu
2024-10-30 13:46:08 +03:00
parent 75319aa3cd
commit df6576a505
10 changed files with 116 additions and 23 deletions
+34 -16
View File
@@ -69,29 +69,29 @@
variables.framework.allowCrossDomain = true; // соответствующие заголовки, включая Access-Control-Allow-Origin выставляются только при наличии заголовка origin в реквесте
//variables.framework.allowCrossDomain = ""; // перепишем явно, возвращая Origin
//variables.framework.docs={};
variables.framework.docs.APIName="Deck API";
variables.framework.docs.APIVersion="0.005";
variables.framework.globalHeaders = structNew();
variables.framework.globalHeaders["Access-Control-Expose-Headers"] = "Location";
variables.framework.globalHeaders["Access-Control-Allow-Credentials"] = "true";
variables.framework.globalHeaders["X-Application-Version"] = "0.00.004";
//variables.framework.globalHeaders["Access-Control-Allow-Origin"] = "*"; //*** не знаю, нужно ли - но просили этот заголовок
//variables.framework.globalHeaders["X-MY-HEADER"] = "my header value for example";
//variables.framework.docs={};
variables.framework.docs.APIName="Deck API";
variables.framework.docs.APIVersion="0.004";
variables.framework.globalHeaders["X-Application-Version"] = variables.framework.docs.APIVersion;
//variables.framework.globalHeaders["Access-Control-Allow-Origin"] = "*";
request.UNDEFINED_USR_ID=-1;
request.ANONYMOUS_USR_ID=2;
request.GUEST_USR_ID=3;
request.GUEST_USR_ID=3
////////////////////////////////////////////////////////
request.ORCHESTRATOR_AUTH = createObject("java", "java.lang.System").getEnv("ORCHESTRATOR_AUTH");
if (isNull(request.ORCHESTRATOR_AUTH)) {
request.ORCHESTRATOR_AUTH = "Basic c3ZjX2xrdGVzdDoxMTgzZDIyNzc1OWExYjFkZmVjM2M3NTFiMzIyNzdiYTQ3";//*** времянка, дубль из корневого Application.cfm
}
//почему-то scope this ведет себя совершенно не так, как request и variables
// в нем переменная имеет значение Empty:null и можно выполнить writedump, а в других получаем ошибку, что такой переменной нет
//*** почему-то scope this ведет себя совершенно не так, как request и variables
// в нем, когда переменная получает значение Empty:null, можно выполнить writedump, а в других получаем ошибку, что такой переменной нет
request.locateIamService=locateIamService; //for possible debug
//request.IAM_SERVICE_URL=this.iamServiceUrl;
</cfscript>
<!--- <cfset this.orchestrator_authorization_string=createObject("java", "java.lang.System").getEnv("ORCHESTRATOR_AUTH")/>
@@ -104,8 +104,24 @@
<!--- <cfset application.dbUser = "username" />
<cfset application.dbPass = "password" />--->
<!---<cfset application._taffy.settings.allowCrossDomain = true/>--->
<cfset this.iamServiceUrl=locateIamService()/> <!--- ***при недоступности будет падать все --->
<cfreturn super.onApplicationStart() />
</cffunction>
</cffunction>
<cffunction name="locateIamService"><!--- *** архитектурный колхоз --->
<cfloop list="https://personal-cabinet.adl.nubes.ru/api/v1/user,https://deck.ngcloud.ru/api/v1/user" index="serviceUrl"><!--- *** начиная с девелоперского --->
<cftry>
<cfhttp url=#serviceUrl# method="OPTIONS" result="resp" timeout=1/>
<!--- <cfdump var=#resp#/> --->
<cfreturn serviceUrl/>
<cfcatch type="any">
<!--- <cfdump var=#cfcatch#/> --->
</cfcatch>
</cftry>
</cfloop>
<cfthrow message="IAM service unavailable" detail="cannot find IAM"/>
</cffunction>
<!--- <cffunction name="onRequest">
<cfargument name="template" type="string" required="true"/>
@@ -149,7 +165,7 @@
//if (UCase(arguments.verb) EQ 'OPTIONS') return newRepresentation().noData().withStatus("204","No Data").withHeaders({"Content-Type":"application/json;charset=utf-8"});
if (UCase(arguments.verb) EQ 'OPTIONS') return true;
/*
var auth="";
if (structKeyExists(headers,"Authorization")) {
auth=headers.Authorization;
@@ -157,7 +173,7 @@
return representationOf("Authorization header expected").withStatus(401);
}
var httpService = new http(method = "GET", charset = "utf-8", url = "https://personal-cabinet.adl.nubes.ru/api/v1/user", timeout="3");
var httpService = new http(method = "GET", charset = "utf-8", url = #this.iamServiceUrl#, timeout="3");
httpService.addParam(type = "HEADER", name = "Accept", value = "application/json");
httpService.addParam(type = "HEADER", name = "Authorization", value = "#auth#"); //passthrough
var resp = httpService.send();
@@ -171,7 +187,7 @@
if (structIsEmpty(usrCustomerInfo)) return representationOf("Cannot find default specification for current user #result#").withStatus(422);
arguments.requestArguments.usrId=usrCustomerInfo.usrId; //Integer!
arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //Integer
*/
return true;
@@ -749,4 +765,6 @@
<cfreturn true />
</cffunction>
</cfcomponent>