( req: $Request, clientMessage: InitialClientSocketMessage, )
| 378 | } |
| 379 | |
| 380 | async function fetchViewerForSocket( |
| 381 | req: $Request, |
| 382 | clientMessage: InitialClientSocketMessage, |
| 383 | ): Promise<Viewer> { |
| 384 | assertSecureRequest(req); |
| 385 | const { sessionIdentification } = clientMessage.payload; |
| 386 | const { sessionID } = sessionIdentification; |
| 387 | const sessionParameterInfo = { |
| 388 | isSocket: true, |
| 389 | sessionID, |
| 390 | sessionIdentifierType: |
| 391 | sessionID !== undefined |
| 392 | ? sessionIdentifierTypes.BODY_SESSION_ID |
| 393 | : sessionIdentifierTypes.COOKIE_ID, |
| 394 | ipAddress: getRequestIPAddress(req), |
| 395 | userAgent: req.get('User-Agent'), |
| 396 | }; |
| 397 | |
| 398 | const result = await fetchViewerFromRequestBody( |
| 399 | clientMessage.payload.sessionIdentification, |
| 400 | sessionParameterInfo, |
| 401 | ); |
| 402 | if (result.type === 'valid') { |
| 403 | return result.viewer; |
| 404 | } |
| 405 | |
| 406 | const anonymousViewerDataPromise: Promise<AnonymousViewerData> = |
| 407 | (async () => { |
| 408 | const platformDetails = |
| 409 | result.type === 'invalidated' ? result.platformDetails : null; |
| 410 | const deviceToken = |
| 411 | result.type === 'invalidated' ? result.deviceToken : null; |
| 412 | return await createNewAnonymousCookie({ |
| 413 | platformDetails, |
| 414 | deviceToken, |
| 415 | }); |
| 416 | })(); |
| 417 | const deleteCookiePromise = (async () => { |
| 418 | if (result.type === 'invalidated') { |
| 419 | await deleteCookie(result.cookieID); |
| 420 | } |
| 421 | })(); |
| 422 | const [anonymousViewerData] = await Promise.all([ |
| 423 | anonymousViewerDataPromise, |
| 424 | deleteCookiePromise, |
| 425 | ]); |
| 426 | |
| 427 | return createViewerForInvalidFetchViewerResult(result, anonymousViewerData); |
| 428 | } |
| 429 | |
| 430 | async function handleFetchViewerResult( |
| 431 | result: FetchViewerResult, |
no test coverage detected