005
This commit is contained in:
+34
-16
@@ -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>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
</cfsilent>
|
||||
|
||||
|
||||
<cffunction name="get" hint="попробуем авторизоваться у элмы">
|
||||
<cffunction name="get" hint="генерирует ошибку 500">
|
||||
<!--- <cfargument name="svcOperationId" required=true hint="int"/> --->
|
||||
<!--- <cftry>
|
||||
<cfset this.helper.validateField(arguments, "svcOperationId", "integer")/>
|
||||
@@ -20,7 +20,7 @@
|
||||
<!--- <cfdump var=#userdata#/><cfabort/> --->
|
||||
|
||||
|
||||
<cfreturn representationOf(fcontent) />
|
||||
<cfreturn representationOf("Some error").withStatus(500) />
|
||||
</cffunction>
|
||||
|
||||
</cfcomponent>
|
||||
@@ -39,7 +39,7 @@
|
||||
</cfcatch>
|
||||
</cftry>
|
||||
|
||||
<!--- <cftry> --->
|
||||
<cftry><!--- *** времянка, пока глотается ошибка 500 --->
|
||||
|
||||
<cfset var maxrows=arguments.pageSize*arguments.page/>
|
||||
<cfset var startrow=arguments.pageSize*(arguments.page-1)+1/>
|
||||
@@ -121,11 +121,10 @@
|
||||
<!---<cfset "out.sql"=#local.result.sql#/>--->
|
||||
<cfreturn representationOf(out)/>
|
||||
|
||||
<!--- <cfcatch type="any">
|
||||
|
||||
<cfcatch type="any">
|
||||
<cfreturn representationOf(cfcatch)/>
|
||||
</cfcatch>
|
||||
</cftry> --->
|
||||
</cfcatch>
|
||||
</cftry>
|
||||
</cffunction>
|
||||
|
||||
|
||||
|
||||
@@ -110,6 +110,8 @@
|
||||
<cfset var maxrows=arguments.pageSize*arguments.page/>
|
||||
<cfset var startrow=arguments.pageSize*(arguments.page-1)+1/>
|
||||
|
||||
<cfset request.locateIamService()/>
|
||||
|
||||
|
||||
<cfquery name="local.qRead" result="local.result">
|
||||
select
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
<cfcomponent extends="taffy.core.resource" taffy:uri="/user">
|
||||
|
||||
<cfsilent>
|
||||
<cfimport prefix="m" taglib="../lib"/>
|
||||
<cfset this.helper=CreateObject("component","lib.rest_api_helper")/><!---*** странно, почему мы его видим?---><!---вынести в апп?--->
|
||||
</cfsilent>
|
||||
|
||||
|
||||
|
||||
|
||||
<cffunction name="get" hint="Контрольная информация по текущему пользователю для проверки контекста. Предполагается использовать только для интеграционной отладки. Исключения перехватываются, всегда возвращается код 200, структура ответа при этом не предназначена для разбора">
|
||||
<cftry>
|
||||
|
||||
<cfset var local={}/><!--- *** а точно нужно var? --->
|
||||
<cfset var out=structNew("linked")/>
|
||||
|
||||
<cfset "out.usrId"=#ARGUMENTS.usrId#/>
|
||||
<cfset "out.iamServiceUrl"=request.locateIamService()/>
|
||||
|
||||
<cfset "out.serviceLocationDurationMs"=getTickCount() - request.startTickCount/>
|
||||
|
||||
<cfquery name=local.qSpec>
|
||||
select
|
||||
<m:field_set titleMapOut="local.specTitleMap" lengthOut="local.fieldCount">
|
||||
<m:field cfSqlType="CF_SQL_INTEGER">s.specification_id</m:field>
|
||||
<m:field>s.specification</m:field>
|
||||
<m:field>(select count(*) from specification_item i where i.specification_id=s.specification_id) as specification_item_count</m:field>
|
||||
<m:field>c.contract_id</m:field>
|
||||
<m:field>c.contract</m:field>
|
||||
<m:field>to_char(c.dt_contract, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as dt_contract</m:field>
|
||||
</m:field_set>
|
||||
from specification s
|
||||
join contract c on (s.contract_id=c.contract_id)
|
||||
join usr u on (c.contragent_id=u.contragent_id)
|
||||
where u.usr_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#ARGUMENTS.usrId#/><!--- *** undeclared --->
|
||||
order by specification_id desc limit 1;
|
||||
</cfquery>
|
||||
|
||||
<cfquery name="local.qRead" result="local.result">
|
||||
select
|
||||
<m:field_set titleMapOut="local.titleMap" lengthOut="local.fieldCount">
|
||||
<m:field cfSqlType="CF_SQL_INTEGER">u.usr_id</m:field>
|
||||
<m:field>u.login</m:field>
|
||||
<m:field>k.contragent_id</m:field>
|
||||
<m:field>k.contragent</m:field>
|
||||
</m:field_set>
|
||||
from usr u
|
||||
left outer join contragent k on u.contragent_id=k.contragent_id
|
||||
where u.usr_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#ARGUMENTS.usrId#/>
|
||||
</cfquery>
|
||||
|
||||
|
||||
<cfset "out.queryDurationMs"=getTickCount() - request.startTickCount- out.serviceLocationDurationMs/>
|
||||
|
||||
<cfset var resultSet=[]/>
|
||||
<cfset "out.usr" = (local.qRead.recordCount GT 0) ? this.helper.appendRecord(structNew("linked"), "", local.titleMap, local.qRead, this.helper.snake2camel) : {}/>
|
||||
<cfset "out.defaultSpecification" = (local.qSpec.recordCount GT 0) ? this.helper.appendRecord(structNew("linked"), "", local.specTitleMap, local.qSpec, this.helper.snake2camel) : {}/>
|
||||
|
||||
<cfset "out.runDurationMs"=getTickCount()-request.startTickCount/>
|
||||
<!---<cfset "out.sql"=#local.result.sql#/>--->
|
||||
<cfreturn representationOf(out)/>
|
||||
|
||||
<cfcatch type="any">
|
||||
<cfreturn representationOf(cfcatch)/>
|
||||
</cfcatch>
|
||||
</cftry>
|
||||
|
||||
</cffunction>
|
||||
|
||||
<!--- <cffunction name="get" hint="проверка">
|
||||
<cfreturn representationOf("Проверка связи")/>
|
||||
</cffunction> --->
|
||||
|
||||
</cfcomponent>
|
||||
Reference in New Issue
Block a user