New Addon

Google BK
This commit is contained in:
2023-04-23 18:17:03 +07:00
parent 1c7fd2b476
commit 702d080a1e
248 changed files with 72745 additions and 0 deletions
@@ -0,0 +1,75 @@
import asyncio
from aiohttp import web
from aiohttp.web import Request
from injector import inject, singleton
from backup.time import Time
from backup.model import Model, Coordinator
from backup.logger import getLogger
from datetime import timedelta
logger = getLogger(__name__)
@singleton
class Debug():
@inject
def __init__(self, model: Model, coord: Coordinator, time: Time):
self._model = model
self._coord = coord
self._time = time
async def getTasks(self, request):
resp = []
for task in asyncio.all_tasks():
data = {
"name": task.get_name(),
"state": str(task._state),
"coroutine": str(task.get_coro())
}
# Get exception
try:
ex = task.exception()
if ex is None:
data['exception'] = "None"
else:
data['exception'] = logger.formatException(ex)
except asyncio.CancelledError:
data['exception'] = "CancelledError"
except asyncio.InvalidStateError:
data['exception'] = "Unfinished"
except Exception:
pass
# Get result
try:
ret = task.result()
if ex is None:
data['result'] = "None"
else:
data['result'] = str(ret)
except asyncio.CancelledError:
data['result'] = "CancelledError"
except asyncio.InvalidStateError:
data['result'] = "Unfinished"
except Exception:
pass
data['stack'] = []
for frame in task.get_stack():
data['stack'].append(str(frame))
resp.append(data)
return web.json_response(resp)
async def simerror(self, request: Request):
error = request.query.get("error", "")
if len(error) == 0:
self._model.simulate_error = None
else:
self._model.simulate_error = error
self._coord.trigger()
return web.json_response({})
async def timeoffset(self, request: Request):
delta = int(request.query.get("offset", ""))
self._time.offset = timedelta(seconds=delta)
return web.json_response({})