Network: add games argument to GetDataPackage (#473)
This commit is contained in:
parent
894a30b9bd
commit
5eab07d8d6
|
@ -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}])
|
||||||
|
|
6
Utils.py
6
Utils.py
|
@ -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:
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue