69 lines
1.2 KiB
Python
69 lines
1.2 KiB
Python
|
import enum
|
||
|
from dataclasses import dataclass
|
||
|
|
||
|
|
||
|
class Actions:
|
||
|
finished = 0
|
||
|
error = 1
|
||
|
message = 2
|
||
|
state_update = 3
|
||
|
|
||
|
|
||
|
@dataclass
|
||
|
class BaseModel:
|
||
|
action: int
|
||
|
app_name: str
|
||
|
|
||
|
@staticmethod
|
||
|
def base_from_json(data: dict) -> dict:
|
||
|
return dict(
|
||
|
action=data["action"],
|
||
|
app_name=data["app_name"]
|
||
|
)
|
||
|
|
||
|
|
||
|
@dataclass
|
||
|
class FinishedModel(BaseModel):
|
||
|
exit_code: int
|
||
|
playtime: int # seconds
|
||
|
|
||
|
@classmethod
|
||
|
def from_json(cls, data):
|
||
|
return cls(
|
||
|
**super().base_from_json(data),
|
||
|
exit_code=data["exit_code"],
|
||
|
playtime=data["playtime"],
|
||
|
)
|
||
|
|
||
|
|
||
|
@dataclass
|
||
|
class StateChangedModel(BaseModel):
|
||
|
class States:
|
||
|
started = 0
|
||
|
|
||
|
# for future
|
||
|
syncing_cloud = 1
|
||
|
cloud_sync_finished = 2
|
||
|
|
||
|
new_state: int
|
||
|
|
||
|
@classmethod
|
||
|
def from_json(cls, data):
|
||
|
return cls(
|
||
|
action=data["action"],
|
||
|
app_name=data["app_name"],
|
||
|
new_state=data["new_state"]
|
||
|
)
|
||
|
|
||
|
|
||
|
@dataclass
|
||
|
class ErrorModel(BaseModel):
|
||
|
error_string: str
|
||
|
|
||
|
@classmethod
|
||
|
def from_json(cls, data):
|
||
|
return cls(
|
||
|
**super().base_from_json(data),
|
||
|
error_string=data["error_string"]
|
||
|
)
|