kboss/b/src/gadget.py
2025-07-16 14:27:17 +08:00

64 lines
1.8 KiB
Python

import os
import sys
from dataui.crud_parser import BricksCRUDProcessor
from ahserver.configuredServer import ConfiguredServer
from appPublic.registerfunction import RegisterFunction
from appPublic.objectAction import ObjectAction
from appPublic.app_logger import create_logger
from appPublic.folderUtils import ProgramPath
from appPublic.jsonConfig import getConfig
from appPublic.i18n import getI18N
from ahserver.filedownload import path_encode
from imgThumb import thumb
from idFile import idFileDownload
from myauth import MyAuthAPI
from rf import getPublicKey, getI18nMapping
from loadplugins import load_plugins
from version import __version__
def encodeFilepath(id,event,d):
if d is None:
return d
if type(d) == type([]):
return ArrayEncodeFilepath(d)
d['rows'] = ArrayEncodeFilepath(d['rows'])
return d
def ArrayEncodeFilepath(d):
ret = []
for r in d:
r['name'] = path_encode(r['name'])
ret.append(r)
return ret
if __name__ == '__main__':
p = ProgramPath()
workdir = os.getcwd()
if len(sys.argv) > 1:
print(workdir, sys.argv[1])
workdir = sys.argv[1]
print(workdir)
config = getConfig(workdir, NS={'workdir':workdir, 'ProgramPath':p})
if config.logger:
logger = create_logger(config.logger.name or 'gadget',
levelname=config.logger.levelname or 'debug',
file=config.logger.logfile or None)
else:
logger = create_logger('gadget', levelname='debug')
rf = RegisterFunction()
rf.register('makeThumb',thumb)
rf.register('idFileDownload',idFileDownload)
rf.register('getPublicKey', getPublicKey)
rf.register('getI18nMapping', getI18nMapping)
i18n = getI18N(path=workdir)
server = ConfiguredServer(auth_klass=MyAuthAPI)
load_plugins(workdir)
logger.info(f'gadget version={__version__}')
logger.debug(f'debug mode show ?')
server.run()