|
1 |
| -from typing import Optional, Dict, Any |
| 1 | +from typing import Optional, Dict, Any, List |
2 | 2 |
|
3 | 3 | from lumigo_tracer.event.trigger_parsing.event_trigger_base import (
|
4 | 4 | EventTriggerParser,
|
5 | 5 | ExtraKeys,
|
6 | 6 | TriggerType,
|
7 | 7 | )
|
| 8 | +from lumigo_tracer.lumigo_utils import get_current_ms_time |
8 | 9 |
|
9 | 10 |
|
10 | 11 | class ApiGatewayEventTriggerParser(EventTriggerParser):
|
@@ -56,3 +57,26 @@ def _parse_http_method_v2(event: Dict[Any, Any], target_id: Optional[str]) -> Tr
|
56 | 57 | from_message_ids=[event.get("requestContext", {}).get("requestId", "")],
|
57 | 58 | extra=extra,
|
58 | 59 | )
|
| 60 | + |
| 61 | + @staticmethod |
| 62 | + def extract_inner_triggers(event: Dict[Any, Any], target_id: str) -> List[TriggerType]: |
| 63 | + """ |
| 64 | + In this function we extract the browser's session using the authorization ID: |
| 65 | + https://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken |
| 66 | + """ |
| 67 | + user_agent = event.get("headers", {}).get("User-Agent") |
| 68 | + claims = event.get("requestContext", {}).get("authorizer", {}).get("claims", {}) |
| 69 | + auth_hash = claims.get("at_hash") or claims.get("event_id") |
| 70 | + if user_agent and auth_hash: |
| 71 | + return [ |
| 72 | + EventTriggerParser.build_trigger( |
| 73 | + target_id=target_id, |
| 74 | + resource_type="browser", |
| 75 | + from_message_ids=[auth_hash], |
| 76 | + extra={ |
| 77 | + ExtraKeys.USER_AGENT: user_agent, |
| 78 | + ExtraKeys.TRIGGER_CREATION_TIME: get_current_ms_time(), |
| 79 | + }, |
| 80 | + ) |
| 81 | + ] |
| 82 | + return [] |
0 commit comments