Skip to content
Snippets Groups Projects
Commit 630df2fb authored by Evgeniy Yurchenko's avatar Evgeniy Yurchenko
Browse files

Merge branch 'Feature-10361' into 'main'

Feature 10361

See merge request !4
parents d3472953 210d50f0
No related branches found
No related tags found
1 merge request!4Feature 10361
from typing import Callable, Protocol from typing import Callable, Protocol, NewType
import traceback import traceback
from CellFrame import AppCliServer from CellFrame import AppCliServer
from DAP.Core import logIt from DAP.Core import logIt
from optparse import OptionParser from optparse import OptionParser
from pycfhelpers.node.types import ReplyId
ReplyId = NewType("ReplyId", int)
class ReplyObject: class ReplyObject:
......
from DAP.Core import AppContext from DAP.Core import AppContext
from DAP.Network import Server, HttpSimple, HttpCode from DAP.Network import Server, HttpSimple, HttpCode
from pycfhelpers.node.logging import CFLog from pycfhelpers.node.logging import CFLog
...@@ -7,38 +6,38 @@ from typing import Callable ...@@ -7,38 +6,38 @@ from typing import Callable
HTTP_REPLY_SIZE_MAX = 10 * 1024 * 1024 HTTP_REPLY_SIZE_MAX = 10 * 1024 * 1024
class CFSimpleHTTPRequest: class CFSimpleHTTPRequest:
def __init__(self, http: HttpSimple): def __init__(self, http: HttpSimple):
self.http = http self.http = http
@property @property
def query(self): def query(self):
return self.http.query return self.http.query
@property @property
def url(self): def url(self):
return self.http.urlPath return self.http.urlPath
property @property
def method(self): def method(self):
return self.http.action return self.http.action
property @property
def body(self): def body(self):
return self.http.request return self.http.request
@property @property
def client_address(self): def client_address(self):
return self.http.ipClient return self.http.ipClient
class CFSimpleHTTPRequestHandler:
def __init__(self, methods: list[str], handler : Callable [[CFSimpleHTTPRequest], tuple[bytes, int]]): class CFSimpleHTTPRequestHandler:
def __init__(self, methods: list[str], handler: Callable[[CFSimpleHTTPRequest], tuple[bytes, int]]):
self.handler = handler self.handler = handler
self.methods = methods self.methods = methods
def __call__(self, http : HttpSimple, response_code: HttpCode): def __call__(self, http: HttpSimple, response_code: HttpCode):
if http.action in self.methods: if http.action in self.methods:
res, code = self.handler(CFSimpleHTTPRequest(http)) res, code = self.handler(CFSimpleHTTPRequest(http))
http.replyAdd(res) http.replyAdd(res)
...@@ -47,18 +46,18 @@ class CFSimpleHTTPRequestHandler: ...@@ -47,18 +46,18 @@ class CFSimpleHTTPRequestHandler:
CFLog.notice(f"Method {http.action} not supported for {http.urlPath} ") CFLog.notice(f"Method {http.action} not supported for {http.urlPath} ")
response_code.set(405) response_code.set(405)
class CFSimpleHTTPServer: class CFSimpleHTTPServer:
def __init__(self): def __init__(self):
self._sc = Server() self._sc = Server()
AppContext.getServer(self._sc) AppContext.getServer(self._sc)
def register_uri_handler(self, uri: str, handler: CFSimpleHTTPRequestHandler): def register_uri_handler(self, uri: str, handler: CFSimpleHTTPRequestHandler):
HttpSimple.addProc(self._sc, uri, HTTP_REPLY_SIZE_MAX, handler) HttpSimple.addProc(self._sc, uri, HTTP_REPLY_SIZE_MAX, handler)
@staticmethod @staticmethod
def handler(uri: str, methods : list[str] = ["GET",], **kwargs): def handler(uri: str, methods: list[str] = ("GET",), **kwargs):
def wrapper(func): def wrapper(func):
CFSimpleHTTPServer().register_uri_handler(uri, CFSimpleHTTPRequestHandler(methods=methods, handler=func)) CFSimpleHTTPServer().register_uri_handler(uri, CFSimpleHTTPRequestHandler(methods=methods, handler=func))
return wrapper
return wrapper
from DAP.Core import logIt from DAP.Core import logIt
class CFLog: class CFLog:
def __init__(self): def __init__(self):
self._logger = logIt self._logger = logIt
...@@ -30,18 +31,3 @@ class CFLog: ...@@ -30,18 +31,3 @@ class CFLog:
def critical(self, message: str): def critical(self, message: str):
self._logger.critical(message) self._logger.critical(message)
def dap(self, message: str):
self._logger.dap(message)
def warning(self, message: str):
self._logger.warning(message)
def att(self, message: str):
self._logger.att(message)
def error(self, message: str):
self._logger.error(message)
def critical(self, message: str):
self._logger.critical(message)
\ No newline at end of file
from typing import Iterator, Callable, Self from typing import Iterator, Callable
import traceback import traceback
...@@ -26,22 +26,21 @@ class NetFee: ...@@ -26,22 +26,21 @@ class NetFee:
class CFNet: class CFNet:
@staticmethod
def active_nets() -> list[Self]:
return [CFNet(n.getName()) for n in Net.getNets()]
def __init__(self, name: str): def __init__(self, name: str):
self.name = name self.name = name
self._origin_net = Net.byName(name) self._origin_net = Net.byName(name)
if not self._origin_net: if not self._origin_net:
raise RuntimeError(f"No such net: {name}") raise RuntimeError(f"No such net: {name}")
self.main = CFChain(self, 'main') self.main = CFChain(self, 'main')
self.zerochain = CFChain(self, 'zerochain') self.zerochain = CFChain(self, 'zerochain')
self.fee_data = NetFee(self) self.fee_data = NetFee(self)
@staticmethod
def active_nets() -> list['CFNet']:
return [CFNet(n.getName()) for n in Net.getNets()]
@property @property
def id(self) -> int: def id(self) -> int:
return self._origin_net.id.long() return self._origin_net.id.long()
......
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