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},
|
"shard": {"type": "list", "required": False},
|
||||||
"presence": {"type": "dict", "required": False},
|
"presence": {"type": "dict", "required": False},
|
||||||
"intents": {"coerce": Intents, "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": {
|
"d": {
|
||||||
"type": "dict",
|
"type": "dict",
|
||||||
"schema": {
|
"schema": {
|
||||||
"guild_id": {"type": "string", "required": True},
|
"user_ids": {
|
||||||
"user_ids": {"type": "list", "required": False},
|
"type": "list",
|
||||||
|
"required": False,
|
||||||
|
"schema": {"type": "string"},
|
||||||
|
},
|
||||||
"query": {"type": "string", "required": False},
|
"query": {"type": "string", "required": False},
|
||||||
"limit": {"type": "number", "required": False},
|
"limit": {"type": "number", "required": False},
|
||||||
"presences": {"type": "bool", "required": False},
|
"presences": {"type": "bool", "required": False},
|
||||||
|
|
|
||||||
|
|
@ -664,7 +664,9 @@ class GatewayWebsocket:
|
||||||
|
|
||||||
async def handle_2(self, payload: Dict[str, Any]):
|
async def handle_2(self, payload: Dict[str, Any]):
|
||||||
"""Handle the OP 2 Identify packet."""
|
"""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"]
|
data = payload["d"]
|
||||||
token = data["token"]
|
token = data["token"]
|
||||||
|
|
||||||
|
|
@ -924,7 +926,13 @@ class GatewayWebsocket:
|
||||||
|
|
||||||
async def handle_8(self, payload: Dict):
|
async def handle_8(self, payload: Dict):
|
||||||
"""Handle OP 8 Request Guild Members."""
|
"""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"]
|
data = payload["d"]
|
||||||
gids = data["guild_id"]
|
gids = data["guild_id"]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue