Browse Source

web exts

main
gsd 4 months ago
parent
commit
cd23e7831f
  1. 28
      service.py
  2. 11
      webExtensions/webPing.py

28
service.py

@ -1,7 +1,7 @@
#sys imports
import argparse
import traceback
import sys
import sys, os
import asyncio
from time import time
from typing import List, Dict
@ -54,7 +54,7 @@ class MeshListener(MeshArgsParse):
#task
async def meshWorker(self, queue: asyncio.Queue):
logger.info("Start mesh queue listener")
run = True
run = not self.args.disable_mesh
while run:
try:
await self.device.start()
@ -82,6 +82,7 @@ class MeshListener(MeshArgsParse):
class MeshApi(MeshArgsParse):
app: FastAPI
tasks: List
context: str = "/api"
def __init__(self, args):
super().__init__(args)
self.app = FastAPI(lifespan=self.lifespan)
@ -169,6 +170,7 @@ class MeshCenter(MeshListener, MeshApi, MongoDriver, MeshArgsParse):
MongoDriver.__init__(self, args)
self.buildBackgroundTasks()
self.bot = BotManager(self)
self.extensionLoader(['webExtensions'])
async def queueHandler(self):
logger.info("Start queue handler")
@ -200,12 +202,34 @@ class MeshCenter(MeshListener, MeshApi, MongoDriver, MeshArgsParse):
self.tasks.append(handlerTask)
def extensionLoader(self, search_paths = []):
logger.info("Search fastapiExt")
os.chdir(os.path.dirname(os.path.abspath(__file__)))
if type(search_paths) == str:
search_paths = [search_paths]
for path in search_paths:
logger.info(f"Try found extensions in {path}")
if not os.path.exists(path) or not os.path.isdir(path):
logger.info(f"Directory is not exists or not directory, skip")
continue
sys.path.insert(0, path)
for extension in os.listdir(path):
extension, ext = os.path.splitext(extension)
if ext != ".py":
continue
logger.info(f"Found web ext: {extension}")
__import__(extension).WebExtension(self)
sys.path.pop(0)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
#mesh
parser.add_argument("--transport", default="serial")
parser.add_argument("--serial-port", default="/dev/tty.usbmodemD0CF1309DC141")
parser.add_argument("--serial-baudrate", default=115200)
parser.add_argument("--disable-mesh", action="store_true", default=True)
#fastapi
parser.add_argument("--web-host", default="0.0.0.0")
parser.add_argument("--web-port", default=8680)

11
webExtensions/webPing.py

@ -0,0 +1,11 @@
from fastapi import FastAPI
class WebExtension:
app: FastAPI
def __init__(self, core):
self.core = core
self.app = core.app
@self.app.get(f"{self.core.context}/ping")
async def pong():
return {"pong": True}
Loading…
Cancel
Save