44from models import Utils , KnownUserError , ActionTypes , RequestValidationResult , QueueEventConfig , CancelEventConfig
55from integration_config_helpers import IntegrationEvaluator
66from queue_url_params import QueueUrlParams
7-
7+ from connector_diagnostics import ConnectorDiagnostics
8+ import json
9+ import sys
810
911class KnownUser :
1012 QUEUEIT_TOKEN_KEY = "queueittoken"
@@ -55,24 +57,6 @@ def __logMoreRequestDetails(debugEntries, httpContextProvider):
5557 "RequestHttpHeader_XForwardedProto" ] = httpContextProvider .getHeader (
5658 "x-forwarded-proto" )
5759
58- @staticmethod
59- def __getIsDebug (queueitToken , secretKey ):
60- qParams = QueueUrlParams .extractQueueParams (queueitToken )
61- if (qParams == None ):
62- return False
63-
64- redirectType = qParams .redirectType
65- if (redirectType == None ):
66- return False
67-
68- if (redirectType .upper () == "DEBUG" ):
69- calculatedHash = QueueitHelpers .hmacSha256Encode (
70- qParams .queueITTokenWithoutHash , secretKey )
71- valid = qParams .hashCode == calculatedHash
72- return valid
73-
74- return False
75-
7660 @staticmethod
7761 def __setDebugCookie (debugEntries , httpContextProvider ):
7862 if (debugEntries == None or len (debugEntries ) == 0 ):
@@ -85,13 +69,18 @@ def __setDebugCookie(debugEntries, httpContextProvider):
8569 cookieValue = cookieValue .strip ('|' )
8670 httpContextProvider .setCookie (KnownUser .QUEUEIT_DEBUG_KEY , cookieValue ,
8771 None , None )
72+ @staticmethod
73+ def __getRunTime ():
74+ return sys .version
8875
8976 @staticmethod
9077 def __resolveQueueRequestByLocalConfig (targetUrl , queueitToken ,
9178 queueConfig , customerId , secretKey ,
92- httpContextProvider , debugEntries ):
93- isDebug = KnownUser .__getIsDebug (queueitToken , secretKey )
79+ httpContextProvider , debugEntries , isDebug ):
9480 if (isDebug ):
81+ debugEntries ["SdkVersion" ] = UserInQueueService .SDK_VERSION
82+ debugEntries ["Connector" ] = httpContextProvider .getProviderName ()
83+ debugEntries ["Runtime" ] = KnownUser .__getRunTime ()
9584 debugEntries ["TargetUrl" ] = targetUrl
9685 debugEntries ["QueueitToken" ] = queueitToken
9786 debugEntries [
@@ -141,11 +130,13 @@ def __resolveQueueRequestByLocalConfig(targetUrl, queueitToken,
141130 @staticmethod
142131 def __cancelRequestByLocalConfig (targetUrl , queueitToken , cancelConfig ,
143132 customerId , secretKey ,
144- httpContextProvider , debugEntries ):
145- targetUrl = KnownUser .__generateTargetUrl (targetUrl ,
146- httpContextProvider )
147- isDebug = KnownUser .__getIsDebug (queueitToken , secretKey )
133+ httpContextProvider , debugEntries , isDebug ):
134+ targetUrl = KnownUser .__generateTargetUrl (targetUrl , httpContextProvider )
135+
148136 if (isDebug ):
137+ debugEntries ["SdkVersion" ] = UserInQueueService .SDK_VERSION
138+ debugEntries ["Connector" ] = httpContextProvider .getProviderName ()
139+ debugEntries ["Runtime" ] = KnownUser .__getRunTime ()
149140 debugEntries ["TargetUrl" ] = targetUrl
150141 debugEntries ["QueueitToken" ] = queueitToken
151142 debugEntries [
@@ -188,13 +179,14 @@ def __cancelRequestByLocalConfig(targetUrl, queueitToken, cancelConfig,
188179 @staticmethod
189180 def __handleQueueAction (currentUrlWithoutQueueITToken , queueitToken ,
190181 customerIntegration , customerId , secretKey ,
191- matchedConfig , httpContextProvider , debugEntries ):
182+ matchedConfig , httpContextProvider , debugEntries , isDebug ):
192183 queueConfig = QueueEventConfig ()
193184 queueConfig .eventId = matchedConfig ["EventId" ]
194185 queueConfig .queueDomain = matchedConfig ["QueueDomain" ]
195186 queueConfig .layoutName = matchedConfig ["LayoutName" ]
196187 queueConfig .culture = matchedConfig ["Culture" ]
197188 queueConfig .cookieDomain = matchedConfig ["CookieDomain" ]
189+ queueConfig .actionName = matchedConfig ["Name" ]
198190 queueConfig .extendCookieValidity = matchedConfig [
199191 "ExtendCookieValidity" ]
200192 queueConfig .cookieValidityMinute = matchedConfig [
@@ -213,21 +205,22 @@ def __handleQueueAction(currentUrlWithoutQueueITToken, queueitToken,
213205
214206 return KnownUser .__resolveQueueRequestByLocalConfig (
215207 targetUrl , queueitToken , queueConfig , customerId , secretKey ,
216- httpContextProvider , debugEntries )
208+ httpContextProvider , debugEntries , isDebug )
217209
218210 @staticmethod
219211 def __handleCancelAction (currentUrlWithoutQueueITToken , queueitToken ,
220212 customerIntegration , customerId , secretKey ,
221- matchedConfig , httpContextProvider , debugEntries ):
213+ matchedConfig , httpContextProvider , debugEntries , isDebug ):
222214 cancelConfig = CancelEventConfig ()
223215 cancelConfig .eventId = matchedConfig ["EventId" ]
224216 cancelConfig .queueDomain = matchedConfig ["QueueDomain" ]
225217 cancelConfig .cookieDomain = matchedConfig ["CookieDomain" ]
226218 cancelConfig .version = customerIntegration ["Version" ]
219+ cancelConfig .actionName = matchedConfig ["Name" ]
227220
228221 return KnownUser .__cancelRequestByLocalConfig (
229222 currentUrlWithoutQueueITToken , queueitToken , cancelConfig ,
230- customerId , secretKey , httpContextProvider , debugEntries )
223+ customerId , secretKey , httpContextProvider , debugEntries , isDebug )
231224
232225 @staticmethod
233226 def extendQueueCookie (eventId , cookieValidityMinute , cookieDomain ,
@@ -253,12 +246,19 @@ def resolveQueueRequestByLocalConfig(targetUrl, queueitToken, queueConfig,
253246 customerId , secretKey ,
254247 httpContextProvider ):
255248 debugEntries = {}
249+ connectorDiagnostics = ConnectorDiagnostics .verify (customerId , secretKey , queueitToken )
250+ if (connectorDiagnostics .hasError ):
251+ return connectorDiagnostics .validationResult
256252 try :
257253 targetUrl = KnownUser .__generateTargetUrl (targetUrl ,
258254 httpContextProvider )
259255 return KnownUser .__resolveQueueRequestByLocalConfig (
260256 targetUrl , queueitToken , queueConfig , customerId , secretKey ,
261- httpContextProvider , debugEntries )
257+ httpContextProvider , debugEntries , connectorDiagnostics .isEnabled )
258+ except Exception as e :
259+ if (connectorDiagnostics .isEnabled ):
260+ debugEntries ["Exception" ] = e .message
261+ raise e
262262 finally :
263263 KnownUser .__setDebugCookie (debugEntries , httpContextProvider )
264264
@@ -267,65 +267,67 @@ def validateRequestByIntegrationConfig(
267267 currentUrlWithoutQueueITToken , queueitToken ,
268268 integrationsConfigString , customerId , secretKey ,
269269 httpContextProvider ):
270- if (Utils .isNilOrEmpty (currentUrlWithoutQueueITToken )):
271- raise KnownUserError (
272- "currentUrlWithoutQueueITToken can not be none or empty." )
273-
274- if (Utils .isNilOrEmpty (integrationsConfigString )):
275- raise KnownUserError (
276- "integrationsConfigString can not be none or empty." )
277270
278271 debugEntries = {}
272+ customerIntegration = None
273+ connectorDiagnostics = ConnectorDiagnostics .verify (customerId , secretKey , queueitToken )
274+ if (connectorDiagnostics .hasError ):
275+ return connectorDiagnostics .validationResult
279276 try :
280- customerIntegration = QueueitHelpers .jsonParse (
281- integrationsConfigString )
282-
283- isDebug = KnownUser .__getIsDebug (queueitToken , secretKey )
284- if (isDebug ):
285- debugEntries ["ConfigVersion" ] = customerIntegration ["Version" ]
277+ if (connectorDiagnostics .isEnabled ):
278+ debugEntries ["SdkVersion" ] = UserInQueueService .SDK_VERSION
279+ debugEntries ["Connector" ] = httpContextProvider .getProviderName ()
280+ debugEntries ["Runtime" ] = KnownUser .__getRunTime ()
286281 debugEntries ["PureUrl" ] = currentUrlWithoutQueueITToken
287282 debugEntries ["QueueitToken" ] = queueitToken
288- debugEntries [
289- "OriginalUrl" ] = httpContextProvider .getOriginalRequestUrl (
290- )
291- KnownUser .__logMoreRequestDetails (debugEntries ,
292- httpContextProvider )
293-
283+ debugEntries ["OriginalUrl" ] = httpContextProvider .getOriginalRequestUrl ()
284+ KnownUser .__logMoreRequestDetails (debugEntries , httpContextProvider )
285+
286+ customerIntegration = json .loads (integrationsConfigString )
287+ if (connectorDiagnostics .isEnabled ):
288+ debugEntries ["ConfigVersion" ] = customerIntegration ["Version" ] if customerIntegration and \
289+ customerIntegration ["Version" ] else "NULL"
290+ if (Utils .isNilOrEmpty (currentUrlWithoutQueueITToken )):
291+ raise KnownUserError (
292+ "currentUrlWithoutQueueITToken can not be none or empty." )
293+
294+ if (not customerIntegration or not customerIntegration ["Version" ]):
295+ raise KnownUserError (
296+ "integrationsConfigString can not be none or empty." )
294297 matchedConfig = IntegrationEvaluator ().getMatchedIntegrationConfig (
295298 customerIntegration , currentUrlWithoutQueueITToken ,
296299 httpContextProvider )
297300
298- if (isDebug ):
301+ if (connectorDiagnostics . isEnabled ):
299302 if (matchedConfig == None ):
300303 debugEntries ["MatchedConfig" ] = "NULL"
301304 else :
302305 debugEntries ["MatchedConfig" ] = matchedConfig ["Name" ]
303306
304307 if (matchedConfig is None ):
305- return RequestValidationResult (None , None , None , None , None )
308+ return RequestValidationResult (None , None , None , None , None , None )
306309
307310 if (matchedConfig ["ActionType" ] == ActionTypes .QUEUE ):
308311 return KnownUser .__handleQueueAction (
309312 currentUrlWithoutQueueITToken , queueitToken ,
310313 customerIntegration , customerId , secretKey , matchedConfig ,
311- httpContextProvider , debugEntries )
314+ httpContextProvider , debugEntries , connectorDiagnostics . isEnabled )
312315 elif (matchedConfig ["ActionType" ] == ActionTypes .CANCEL ):
313316 return KnownUser .__handleCancelAction (
314317 currentUrlWithoutQueueITToken , queueitToken ,
315318 customerIntegration , customerId , secretKey , matchedConfig ,
316- httpContextProvider , debugEntries )
319+ httpContextProvider , debugEntries , connectorDiagnostics . isEnabled )
317320 else : # for all unknown types default to 'Ignore'
318321 userInQueueService = KnownUser .__getUserInQueueService (
319- httpContextProvider )
320- result = userInQueueService .getIgnoreActionResult ()
322+ httpContextProvider )
323+ result = userInQueueService .getIgnoreActionResult (matchedConfig [ 'Name' ] )
321324 result .isAjaxResult = KnownUser .__isQueueAjaxCall (
322325 httpContextProvider )
323326 return result
324-
325- except StandardError as stdErr :
326- raise KnownUserError (
327- "integrationConfiguration text was not valid: " +
328- stdErr .message )
327+ except Exception as e :
328+ if (connectorDiagnostics .isEnabled ):
329+ debugEntries ["Exception" ] = e .message
330+ raise e
329331 finally :
330332 KnownUser .__setDebugCookie (debugEntries , httpContextProvider )
331333 pass
@@ -334,9 +336,16 @@ def validateRequestByIntegrationConfig(
334336 def cancelRequestByLocalConfig (targetUrl , queueitToken , cancelConfig ,
335337 customerId , secretKey , httpContextProvider ):
336338 debugEntries = {}
339+ connectorDiagnostics = ConnectorDiagnostics .verify (customerId , secretKey , queueitToken )
340+ if (connectorDiagnostics .hasError ):
341+ return connectorDiagnostics .validationResult
337342 try :
338343 return KnownUser .__cancelRequestByLocalConfig (
339344 targetUrl , queueitToken , cancelConfig , customerId , secretKey ,
340- httpContextProvider , debugEntries )
345+ httpContextProvider , debugEntries , connectorDiagnostics .isEnabled )
346+ except Exception as e :
347+ if (connectorDiagnostics .isEnabled ):
348+ debugEntries ["Exception" ] = e .message
349+ raise e
341350 finally :
342351 KnownUser .__setDebugCookie (debugEntries , httpContextProvider )
0 commit comments