Skip to content
Snippets Groups Projects
Commit 0da70068 authored by boo's avatar boo
Browse files

Merge branch 'main' into Feature-10361

parents f43e926f d3472953
No related branches found
No related tags found
1 merge request!4Feature 10361
from DAP.Core import AppContext
from DAP.Network import Server, HttpSimple, HttpCode
from pycfhelpers.node.logging import CFLog
from typing import Callable
HTTP_REPLY_SIZE_MAX = 10 * 1024 * 1024
class CFSimpleHTTPRequest:
def __init__(self, http: HttpSimple):
self.http = http
@property
def query(self):
return self.http.query
@property
def url(self):
return self.http.urlPath
property
def method(self):
return self.http.action
property
def body(self):
return self.http.request
@property
def client_address(self):
return self.http.ipClient
class CFSimpleHTTPRequestHandler:
def __init__(self, methods: list[str], handler : Callable [[CFSimpleHTTPRequest], tuple[bytes, int]]):
self.handler = handler
self.methods = methods
def __call__(self, http : HttpSimple, response_code: HttpCode):
if http.action in self.methods:
res, code = self.handler(CFSimpleHTTPRequest(http))
http.replyAdd(res)
response_code.set(code)
else:
CFLog.notice(f"Method {http.action} not supported for {http.urlPath} ")
response_code.set(405)
class CFSimpleHTTPServer:
def __init__(self):
self._sc = Server()
AppContext.getServer(self._sc)
def register_uri_handler(self, uri: str, handler: CFSimpleHTTPRequestHandler):
HttpSimple.addProc(self._sc, uri, HTTP_REPLY_SIZE_MAX, handler)
@staticmethod
def handler(uri: str, methods : list[str] = ["GET",], **kwargs):
def wrapper(func):
CFSimpleHTTPServer().register_uri_handler(uri, CFSimpleHTTPRequestHandler(methods=methods, handler=func))
return wrapper
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment