reyserver 1.1.38__py3-none-any.whl → 1.1.39__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- reyserver/rbase.py +54 -2
- reyserver/rdb.py +11 -0
- reyserver/rserver.py +38 -21
- {reyserver-1.1.38.dist-info → reyserver-1.1.39.dist-info}/METADATA +1 -1
- reyserver-1.1.39.dist-info/RECORD +10 -0
- reyserver-1.1.38.dist-info/RECORD +0 -9
- {reyserver-1.1.38.dist-info → reyserver-1.1.39.dist-info}/WHEEL +0 -0
- {reyserver-1.1.38.dist-info → reyserver-1.1.39.dist-info}/licenses/LICENSE +0 -0
reyserver/rbase.py
CHANGED
@@ -9,12 +9,17 @@
|
|
9
9
|
"""
|
10
10
|
|
11
11
|
|
12
|
-
from
|
12
|
+
from typing import Sequence
|
13
|
+
from inspect import iscoroutinefunction
|
14
|
+
from contextlib import asynccontextmanager
|
15
|
+
from fastapi import FastAPI
|
16
|
+
from reykit.rbase import CoroutineFunctionSimple, Base, is_iterable
|
13
17
|
|
14
18
|
|
15
19
|
__all__ = (
|
16
20
|
'ServerBase',
|
17
|
-
'ServerAPI'
|
21
|
+
'ServerAPI',
|
22
|
+
'generate_lifespan'
|
18
23
|
)
|
19
24
|
|
20
25
|
|
@@ -28,3 +33,50 @@ class ServerAPI(ServerBase):
|
|
28
33
|
"""
|
29
34
|
Server API type.
|
30
35
|
"""
|
36
|
+
|
37
|
+
|
38
|
+
def generate_lifespan(
|
39
|
+
before: CoroutineFunctionSimple | Sequence[CoroutineFunctionSimple] | None = None,
|
40
|
+
after: CoroutineFunctionSimple | Sequence[CoroutineFunctionSimple] | None = None,
|
41
|
+
):
|
42
|
+
"""
|
43
|
+
Generate function of lifespan manager.
|
44
|
+
|
45
|
+
Parameters
|
46
|
+
----------
|
47
|
+
before : Execute before server start.
|
48
|
+
after : Execute after server end.
|
49
|
+
"""
|
50
|
+
|
51
|
+
# Parameter.
|
52
|
+
if before is None:
|
53
|
+
before = ()
|
54
|
+
elif iscoroutinefunction(before):
|
55
|
+
before = (before,)
|
56
|
+
if after is None:
|
57
|
+
after = ()
|
58
|
+
elif iscoroutinefunction(after):
|
59
|
+
after = (after,)
|
60
|
+
|
61
|
+
# Define.
|
62
|
+
@asynccontextmanager
|
63
|
+
async def lifespan(app: FastAPI):
|
64
|
+
"""
|
65
|
+
Server lifespan manager.
|
66
|
+
|
67
|
+
Parameters
|
68
|
+
----------
|
69
|
+
app : Server APP.
|
70
|
+
"""
|
71
|
+
|
72
|
+
# Before.
|
73
|
+
for task in before:
|
74
|
+
await task()
|
75
|
+
yield
|
76
|
+
|
77
|
+
# After.
|
78
|
+
for task in after:
|
79
|
+
await after()
|
80
|
+
|
81
|
+
|
82
|
+
return lifespan
|
reyserver/rdb.py
ADDED
reyserver/rserver.py
CHANGED
@@ -10,14 +10,16 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
from typing import Literal
|
13
|
+
from inspect import iscoroutinefunction
|
13
14
|
from collections.abc import Sequence, Callable, Coroutine
|
14
|
-
from fastapi import FastAPI
|
15
|
+
from fastapi import FastAPI, Depends
|
15
16
|
from fastapi.middleware.gzip import GZipMiddleware
|
16
17
|
from fastapi.staticfiles import StaticFiles
|
17
18
|
from uvicorn import run as uvicorn_run
|
19
|
+
from contextlib import asynccontextmanager
|
18
20
|
from reykit.rbase import CoroutineFunctionSimple
|
19
21
|
|
20
|
-
from .rbase import ServerBase
|
22
|
+
from .rbase import ServerBase, generate_lifespan
|
21
23
|
|
22
24
|
|
23
25
|
__all__ = (
|
@@ -48,31 +50,43 @@ class Server(ServerBase):
|
|
48
50
|
----------
|
49
51
|
public : Public directory.
|
50
52
|
depend : Global api dependencies.
|
51
|
-
before :
|
53
|
+
before : Execute before server start.
|
54
|
+
after : Execute after server end.
|
52
55
|
"""
|
53
56
|
|
54
57
|
# Parameter.
|
55
58
|
if type(ssl_cert) != type(ssl_key):
|
56
59
|
raise
|
60
|
+
lifespan = generate_lifespan(before, after)
|
61
|
+
if iscoroutinefunction(depend):
|
62
|
+
depend = (depend,)
|
63
|
+
dependencies = [
|
64
|
+
Depends(depend)
|
65
|
+
for task in depend
|
66
|
+
]
|
57
67
|
|
58
68
|
# Build.
|
59
|
-
self.app = FastAPI()
|
60
|
-
# self.index = Folder(public) + 'index.html'
|
61
69
|
self.ssl_cert = ssl_cert
|
62
70
|
self.ssl_key = ssl_key
|
63
71
|
|
64
|
-
##
|
65
|
-
self.app
|
66
|
-
|
67
|
-
|
72
|
+
## App.
|
73
|
+
self.app = FastAPI(
|
74
|
+
dependencies=dependencies,
|
75
|
+
lifespan=lifespan
|
76
|
+
)
|
68
77
|
|
69
78
|
## Static.
|
70
79
|
if public is not None:
|
71
80
|
subapp = StaticFiles(directory=public, html=True)
|
72
81
|
self.app.mount('/', subapp)
|
73
82
|
|
83
|
+
## Middleware.
|
84
|
+
self.app.add_middleware(GZipMiddleware)
|
85
|
+
# self.app.add_middleware(TrustedHostMiddleware)
|
86
|
+
# self.app.add_middleware(HTTPSRedirectMiddleware)
|
87
|
+
|
74
88
|
|
75
|
-
def run(self):
|
89
|
+
def run(self) -> None:
|
76
90
|
"""
|
77
91
|
Run.
|
78
92
|
"""
|
@@ -85,23 +99,26 @@ class Server(ServerBase):
|
|
85
99
|
)
|
86
100
|
|
87
101
|
|
88
|
-
def add_api_all(self):
|
102
|
+
# def add_api_all(self) -> None:
|
103
|
+
# """
|
104
|
+
# Add all API.
|
105
|
+
# """
|
89
106
|
|
90
|
-
|
107
|
+
# self.add_api_all()
|
91
108
|
|
92
109
|
|
93
|
-
def add_api_base(self):
|
110
|
+
# def add_api_base(self):
|
94
111
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
112
|
+
# # @self.app.get('/')
|
113
|
+
# # def index():
|
114
|
+
# # file_bytes = File(self.index).bytes
|
115
|
+
# # response = HTMLResponse(file_bytes)
|
116
|
+
# # return response
|
100
117
|
|
101
118
|
|
102
|
-
|
103
|
-
|
104
|
-
|
119
|
+
# @self.app.get('/test')
|
120
|
+
# def test():
|
121
|
+
# return {'message': 'test'}
|
105
122
|
|
106
123
|
|
107
124
|
def add_api_file(self): ...
|
@@ -0,0 +1,10 @@
|
|
1
|
+
reyserver/__init__.py,sha256=ZNzM6wBvBSXe1LgV40ZJ1WIAbejWNYGl8x22dmt8C60,289
|
2
|
+
reyserver/rall.py,sha256=F-vUJIf5DgP0FXI0pdTrEeEiMtN-g81_yTo4ibUL9xk,233
|
3
|
+
reyserver/rbase.py,sha256=EVLCkX2xdPNdPwkRnZ2ZSjM7kctnMoQ_FSlSNHSZt2E,1630
|
4
|
+
reyserver/rdb.py,sha256=dfM3alvIII_eDgSCYhGfmQH7kh6eYsDmz4DaprYy9c8,170
|
5
|
+
reyserver/rfile.py,sha256=P3i1wa2JYsgNFrm0pDCsDN_zFo_Xpv4XigePotVzn8s,8213
|
6
|
+
reyserver/rserver.py,sha256=e-AFB75511HTOf7XjWerCNq86-QEm_2C81psMrldxls,3085
|
7
|
+
reyserver-1.1.39.dist-info/METADATA,sha256=EgXGwkne3cVZIovlCdQEjTngnnpWIjWVY35AO89_TTA,1549
|
8
|
+
reyserver-1.1.39.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
9
|
+
reyserver-1.1.39.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
10
|
+
reyserver-1.1.39.dist-info/RECORD,,
|
@@ -1,9 +0,0 @@
|
|
1
|
-
reyserver/__init__.py,sha256=ZNzM6wBvBSXe1LgV40ZJ1WIAbejWNYGl8x22dmt8C60,289
|
2
|
-
reyserver/rall.py,sha256=F-vUJIf5DgP0FXI0pdTrEeEiMtN-g81_yTo4ibUL9xk,233
|
3
|
-
reyserver/rbase.py,sha256=TtCmqjofwKkE0vdOIc5WhWxbgAUd8pFgx26-VON11yA,397
|
4
|
-
reyserver/rfile.py,sha256=P3i1wa2JYsgNFrm0pDCsDN_zFo_Xpv4XigePotVzn8s,8213
|
5
|
-
reyserver/rserver.py,sha256=NyI9_evkZ2uGXajI75X8Paj18N1S2f9xUGgLGeQ_2ag,2546
|
6
|
-
reyserver-1.1.38.dist-info/METADATA,sha256=CuZu-kkGUgw0qSvNpzMYVlhIhvF2QL7uG36GZuEn9qE,1549
|
7
|
-
reyserver-1.1.38.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
8
|
-
reyserver-1.1.38.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
9
|
-
reyserver-1.1.38.dist-info/RECORD,,
|
File without changes
|
File without changes
|