mirror of https://gitlab.com/litecord/litecord.git
update gateway schemas
This commit is contained in:
parent
07edc235f5
commit
a830c9cb77
|
|
@ -65,6 +65,47 @@ IDENTIFY_SCHEMA = {
|
|||
"shard": {"type": "list", "required": False},
|
||||
"presence": {"type": "dict", "required": False},
|
||||
"intents": {"coerce": Intents, "required": False},
|
||||
# TODO schema
|
||||
"properties": {
|
||||
"type": "dict",
|
||||
"required": False,
|
||||
"schema": {
|
||||
"browser": {"type": "string", "required": False},
|
||||
"client_build_number": {"type": "number", "required": False},
|
||||
"client_event_source": {
|
||||
"type": "string",
|
||||
"required": False,
|
||||
"nullable": True,
|
||||
},
|
||||
"client_version": {"type": "string", "required": False},
|
||||
"distro": {"type": "string", "required": False},
|
||||
"os": {"type": "string", "required": False},
|
||||
"os_arch": {"type": "string", "required": False},
|
||||
"os_version": {"type": "string", "required": False},
|
||||
"release_channel": {"type": "string", "required": False},
|
||||
"system_locale": {"type": "string", "required": False},
|
||||
"window_manager": {"type": "string", "required": False},
|
||||
},
|
||||
},
|
||||
"capabilities": {"type": "number", "required": False},
|
||||
"client_state": {
|
||||
"type": "dict",
|
||||
"required": False,
|
||||
"schema": {
|
||||
# guild_hashes is a Dict with keys being guild ids and
|
||||
# values being a list of 3 strings. this can not be
|
||||
# validated by cerberus
|
||||
"highest_last_message_id": {
|
||||
"type": "string",
|
||||
"required": False,
|
||||
},
|
||||
"read_state_version": {"type": "number", "required": False},
|
||||
"user_guild_settings_version": {
|
||||
"type": "number",
|
||||
"required": False,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
|
|
@ -90,8 +131,11 @@ REQ_GUILD_SCHEMA = {
|
|||
"d": {
|
||||
"type": "dict",
|
||||
"schema": {
|
||||
"guild_id": {"type": "string", "required": True},
|
||||
"user_ids": {"type": "list", "required": False},
|
||||
"user_ids": {
|
||||
"type": "list",
|
||||
"required": False,
|
||||
"schema": {"type": "string"},
|
||||
},
|
||||
"query": {"type": "string", "required": False},
|
||||
"limit": {"type": "number", "required": False},
|
||||
"presences": {"type": "bool", "required": False},
|
||||
|
|
|
|||
|
|
@ -664,7 +664,9 @@ class GatewayWebsocket:
|
|||
|
||||
async def handle_2(self, payload: Dict[str, Any]):
|
||||
"""Handle the OP 2 Identify packet."""
|
||||
payload = validate(payload, IDENTIFY_SCHEMA)
|
||||
payload_copy = dict(payload)
|
||||
payload_copy["d"].get("client_state", {}).pop("guild_hashes")
|
||||
validate(payload_copy, IDENTIFY_SCHEMA)
|
||||
data = payload["d"]
|
||||
token = data["token"]
|
||||
|
||||
|
|
@ -924,7 +926,13 @@ class GatewayWebsocket:
|
|||
|
||||
async def handle_8(self, payload: Dict):
|
||||
"""Handle OP 8 Request Guild Members."""
|
||||
payload = validate(payload, REQ_GUILD_SCHEMA)
|
||||
|
||||
# we do not validate guild ids because it can either be a string
|
||||
# or a list of strings and cerberus does not validate that.
|
||||
payload_copy = dict(payload)
|
||||
payload_copy["d"].pop("guild_id")
|
||||
validate(payload_copy, REQ_GUILD_SCHEMA)
|
||||
|
||||
data = payload["d"]
|
||||
gids = data["guild_id"]
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue