-
Notifications
You must be signed in to change notification settings - Fork 421
/
Copy pathapigw_websocket.py
64 lines (47 loc) · 2.93 KB
/
apigw_websocket.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from datetime import datetime
from typing import Dict, List, Literal, Optional, Type, Union
from pydantic import BaseModel, Field
from pydantic.networks import IPvAnyNetwork
class APIGatewayWebSocketEventIdentity(BaseModel):
source_ip: IPvAnyNetwork = Field(alias="sourceIp")
user_agent: Optional[str] = Field(None, alias="userAgent")
class APIGatewayWebSocketEventRequestContextBase(BaseModel):
extended_request_id: str = Field(alias="extendedRequestId")
request_time: str = Field(alias="requestTime")
stage: str = Field(alias="stage")
connected_at: datetime = Field(alias="connectedAt")
request_time_epoch: datetime = Field(alias="requestTimeEpoch")
identity: APIGatewayWebSocketEventIdentity = Field(alias="identity")
request_id: str = Field(alias="requestId")
domain_name: str = Field(alias="domainName")
connection_id: str = Field(alias="connectionId")
api_id: str = Field(alias="apiId")
class APIGatewayWebSocketMessageEventRequestContext(APIGatewayWebSocketEventRequestContextBase):
route_key: str = Field(alias="routeKey")
message_id: str = Field(alias="messageId")
event_type: Literal["MESSAGE"] = Field(alias="eventType")
message_direction: Literal["IN", "OUT"] = Field(alias="messageDirection")
class APIGatewayWebSocketConnectEventRequestContext(APIGatewayWebSocketEventRequestContextBase):
route_key: Literal["$connect"] = Field(alias="routeKey")
event_type: Literal["CONNECT"] = Field(alias="eventType")
message_direction: Literal["IN"] = Field(alias="messageDirection")
class APIGatewayWebSocketDisconnectEventRequestContext(APIGatewayWebSocketEventRequestContextBase):
route_key: Literal["$disconnect"] = Field(alias="routeKey")
disconnect_status_code: int = Field(alias="disconnectStatusCode")
event_type: Literal["DISCONNECT"] = Field(alias="eventType")
message_direction: Literal["IN"] = Field(alias="messageDirection")
disconnect_reason: str = Field(alias="disconnectReason")
class APIGatewayWebSocketConnectEventModel(BaseModel):
headers: Dict[str, str] = Field(alias="headers")
multi_value_headers: Dict[str, List[str]] = Field(alias="multiValueHeaders")
request_context: APIGatewayWebSocketConnectEventRequestContext = Field(alias="requestContext")
is_base64_encoded: bool = Field(alias="isBase64Encoded")
class APIGatewayWebSocketDisconnectEventModel(BaseModel):
headers: Dict[str, str] = Field(alias="headers")
multi_value_headers: Dict[str, List[str]] = Field(alias="multiValueHeaders")
request_context: APIGatewayWebSocketDisconnectEventRequestContext = Field(alias="requestContext")
is_base64_encoded: bool = Field(alias="isBase64Encoded")
class APIGatewayWebSocketMessageEventModel(BaseModel):
request_context: APIGatewayWebSocketMessageEventRequestContext = Field(alias="requestContext")
is_base64_encoded: bool = Field(alias="isBase64Encoded")
body: Optional[Union[str, Type[BaseModel]]] = Field(None, alias="body")