2022-06-09 07:14:48 +12:00
|
|
|
from dataclasses import dataclass
|
2023-12-06 21:04:25 +13:00
|
|
|
from typing import Dict
|
2022-06-09 07:14:48 +12:00
|
|
|
|
|
|
|
|
|
|
|
class Actions:
|
2023-01-25 02:28:01 +13:00
|
|
|
undefined = 0
|
|
|
|
finished = 1
|
|
|
|
error = 2
|
|
|
|
message = 3
|
|
|
|
state_update = 4
|
2022-06-09 07:14:48 +12:00
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
class BaseModel:
|
|
|
|
action: int
|
|
|
|
app_name: str
|
|
|
|
|
2022-06-12 02:59:53 +12:00
|
|
|
@classmethod
|
2023-12-06 21:04:25 +13:00
|
|
|
def from_json(cls, data: Dict):
|
2022-06-12 02:59:53 +12:00
|
|
|
return cls(
|
2022-06-09 07:14:48 +12:00
|
|
|
action=data["action"],
|
|
|
|
app_name=data["app_name"]
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
class FinishedModel(BaseModel):
|
|
|
|
exit_code: int
|
|
|
|
playtime: int # seconds
|
|
|
|
|
|
|
|
@classmethod
|
2023-12-06 21:04:25 +13:00
|
|
|
def from_json(cls, data: Dict):
|
2022-06-09 07:14:48 +12:00
|
|
|
return cls(
|
2023-12-06 21:04:25 +13:00
|
|
|
**vars(BaseModel.from_json(data)),
|
2022-06-09 07:14:48 +12:00
|
|
|
exit_code=data["exit_code"],
|
|
|
|
playtime=data["playtime"],
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
class StateChangedModel(BaseModel):
|
|
|
|
class States:
|
2023-01-25 02:28:01 +13:00
|
|
|
started = 1
|
2022-06-09 07:14:48 +12:00
|
|
|
# for future
|
2023-01-25 02:28:01 +13:00
|
|
|
syncing_cloud = 2
|
|
|
|
cloud_sync_finished = 3
|
2022-06-09 07:14:48 +12:00
|
|
|
|
|
|
|
new_state: int
|
|
|
|
|
|
|
|
@classmethod
|
2023-12-06 21:04:25 +13:00
|
|
|
def from_json(cls, data: Dict):
|
2022-06-09 07:14:48 +12:00
|
|
|
return cls(
|
|
|
|
action=data["action"],
|
|
|
|
app_name=data["app_name"],
|
|
|
|
new_state=data["new_state"]
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
class ErrorModel(BaseModel):
|
|
|
|
error_string: str
|
|
|
|
|
|
|
|
@classmethod
|
2023-12-06 21:04:25 +13:00
|
|
|
def from_json(cls, data: Dict):
|
2022-06-09 07:14:48 +12:00
|
|
|
return cls(
|
2023-12-06 21:04:25 +13:00
|
|
|
**vars(BaseModel.from_json(data)),
|
2022-06-09 07:14:48 +12:00
|
|
|
error_string=data["error_string"]
|
|
|
|
)
|