Network: add games argument to GetDataPackage (#473)

This commit is contained in:
Fabian Dill 2022-04-30 04:39:08 +02:00 committed by GitHub
parent 894a30b9bd
commit 5eab07d8d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 8 deletions

View File

@ -1466,7 +1466,13 @@ async def process_client_cmd(ctx: Context, client: Client, args: dict):
elif cmd == "GetDataPackage": elif cmd == "GetDataPackage":
exclusions = args.get("exclusions", []) exclusions = args.get("exclusions", [])
if exclusions: if "games" in args:
games = {name: game_data for name, game_data in network_data_package["games"].items()
if name in set(args.get("games", []))}
await ctx.send_msgs(client, [{"cmd": "DataPackage",
"data": {"games": games}}])
# TODO: remove exclusions behaviour around 0.5.0
elif exclusions:
exclusions = set(exclusions) exclusions = set(exclusions)
games = {name: game_data for name, game_data in network_data_package["games"].items() games = {name: game_data for name, game_data in network_data_package["games"].items()
if name not in exclusions} if name not in exclusions}
@ -1474,6 +1480,7 @@ async def process_client_cmd(ctx: Context, client: Client, args: dict):
package["games"] = games package["games"] = games
await ctx.send_msgs(client, [{"cmd": "DataPackage", await ctx.send_msgs(client, [{"cmd": "DataPackage",
"data": package}]) "data": package}])
else: else:
await ctx.send_msgs(client, [{"cmd": "DataPackage", await ctx.send_msgs(client, [{"cmd": "DataPackage",
"data": network_data_package}]) "data": network_data_package}])

View File

@ -58,8 +58,7 @@ RetType = typing.TypeVar("RetType")
def cache_argsless(function: typing.Callable[[], RetType]) -> typing.Callable[[], RetType]: def cache_argsless(function: typing.Callable[[], RetType]) -> typing.Callable[[], RetType]:
if function.__code__.co_argcount: assert not function.__code__.co_argcount, "Can only cache 0 argument functions with this cache."
raise Exception("Can only cache 0 argument functions with this cache.")
sentinel = object() sentinel = object()
result: typing.Union[object, RetType] = sentinel result: typing.Union[object, RetType] = sentinel
@ -482,7 +481,8 @@ class VersionException(Exception):
pass pass
def format_SI_prefix(value, power=1000, power_labels=('', 'k', 'M', 'G', 'T', "P", "E", "Z", "Y")): # noinspection PyPep8Naming
def format_SI_prefix(value, power=1000, power_labels=('', 'k', 'M', 'G', 'T', "P", "E", "Z", "Y")) -> str:
n = 0 n = 0
while value > power: while value > power:

View File

@ -305,9 +305,9 @@ Basic chat command which sends text to the server to be distributed to other cli
Requests the data package from the server. Does not require client authentication. Requests the data package from the server. Does not require client authentication.
#### Arguments #### Arguments
| Name | Type | Notes | | Name | Type | Notes |
| ------ | ----- | ------ | |-------| ----- |---------------------------------------------------------------------------------------------------------------------------------|
| exclusions | list\[str\] | Optional. If specified, will not send back the specified data. Such as, \["Factorio"\] -> Datapackage without Factorio data.| | games | list\[str\] | Optional. If specified, will only send back the specified data. Such as, \["Factorio"\] -> Datapackage with only Factorio data. |
### Bounce ### Bounce
Send this message to the server, tell it which clients should receive the message and Send this message to the server, tell it which clients should receive the message and
@ -569,7 +569,6 @@ Note:
| Name | Type | Notes | | Name | Type | Notes |
| ------ | ----- | ------ | | ------ | ----- | ------ |
| games | dict[str, GameData] | Mapping of all Games and their respective data | | games | dict[str, GameData] | Mapping of all Games and their respective data |
| version | int | Sum of all per-game version numbers, for clients that don't bother with per-game caching/updating. |
#### GameData #### GameData
GameData is a **dict** but contains these keys and values. It's broken out into another "type" for ease of documentation. GameData is a **dict** but contains these keys and values. It's broken out into another "type" for ease of documentation.