reyserver 1.1.44__py3-none-any.whl → 1.1.45__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 +2 -3
- reyserver/rclient.py +58 -1
- reyserver/rfile.py +3 -3
- reyserver/rserver.py +3 -3
- {reyserver-1.1.44.dist-info → reyserver-1.1.45.dist-info}/METADATA +1 -1
- reyserver-1.1.45.dist-info/RECORD +10 -0
- reyserver-1.1.44.dist-info/RECORD +0 -10
- {reyserver-1.1.44.dist-info → reyserver-1.1.45.dist-info}/WHEEL +0 -0
- {reyserver-1.1.44.dist-info → reyserver-1.1.45.dist-info}/licenses/LICENSE +0 -0
reyserver/rbase.py
CHANGED
@@ -13,10 +13,9 @@ from typing import Sequence
|
|
13
13
|
from inspect import iscoroutinefunction
|
14
14
|
from contextlib import asynccontextmanager
|
15
15
|
from fastapi import FastAPI
|
16
|
-
from
|
17
|
-
from reykit.rbase import CoroutineFunctionSimple, Base, ConfigMeta, throw
|
16
|
+
from reykit.rbase import CoroutineFunctionSimple, Base, ConfigMeta
|
18
17
|
|
19
|
-
import rserver
|
18
|
+
from . import rserver
|
20
19
|
|
21
20
|
|
22
21
|
__all__ = (
|
reyserver/rclient.py
CHANGED
@@ -9,6 +9,9 @@
|
|
9
9
|
"""
|
10
10
|
|
11
11
|
|
12
|
+
from reykit.ros import File, get_md5
|
13
|
+
from reykit.rnet import join_url, request
|
14
|
+
|
12
15
|
from .rbase import ServerBase
|
13
16
|
|
14
17
|
|
@@ -36,7 +39,61 @@ class ServerClient(ServerBase):
|
|
36
39
|
self.url = url
|
37
40
|
|
38
41
|
|
39
|
-
def upload_file(
|
42
|
+
def upload_file(
|
43
|
+
self,
|
44
|
+
source: str | bytes,
|
45
|
+
name: str | None = None,
|
46
|
+
note: str | None = None
|
47
|
+
) -> int:
|
48
|
+
"""
|
49
|
+
Upload file.
|
50
|
+
|
51
|
+
Parameters
|
52
|
+
----------
|
53
|
+
source : File path or file bytes.
|
54
|
+
name : File name.
|
55
|
+
- `None`: Automatic set.
|
56
|
+
`parameter 'file' is 'str'`: Use path file name.
|
57
|
+
`parameter 'file' is 'bytes'`: No name.
|
58
|
+
- `str`: Use this name.
|
59
|
+
note : File note.
|
60
|
+
|
61
|
+
Returns
|
62
|
+
-------
|
63
|
+
File ID.
|
64
|
+
"""
|
65
|
+
|
66
|
+
# Handle parameter.
|
67
|
+
url = join_url(self.url, 'file', 'upload')
|
68
|
+
match source:
|
69
|
+
|
70
|
+
## File path.
|
71
|
+
case str():
|
72
|
+
file = File(source)
|
73
|
+
file_bytes = file.bytes
|
74
|
+
file_name = file.name_suffix
|
75
|
+
|
76
|
+
## File bytes.
|
77
|
+
case bytes() | bytearray():
|
78
|
+
if type(source) == bytearray:
|
79
|
+
source = bytes(source)
|
80
|
+
file_bytes = source
|
81
|
+
file_name = None
|
82
|
+
|
83
|
+
## File name.
|
84
|
+
if name is not None:
|
85
|
+
file_name = name
|
86
|
+
|
87
|
+
# Upload.
|
88
|
+
data = {'name': file_name, 'note': note}
|
89
|
+
files = {'file': file_bytes}
|
90
|
+
response = request(url, data=data, files=files, check=True)
|
91
|
+
|
92
|
+
## Extract.
|
93
|
+
response_json = response.json()
|
94
|
+
file_id = response_json['file_id']
|
95
|
+
|
96
|
+
return file_id
|
40
97
|
|
41
98
|
|
42
99
|
def download_file(self): ...
|
reyserver/rfile.py
CHANGED
@@ -57,6 +57,7 @@ depend_sess_file = create_depend_sess('file')
|
|
57
57
|
@file_router.post('/upload')
|
58
58
|
async def upload(
|
59
59
|
file: Annotated[UploadFile, File()],
|
60
|
+
name: Annotated[str, Form()],
|
60
61
|
note: Annotated[str, Form()],
|
61
62
|
sess: Annotated[rorm.DatabaseORMSessionAsync, Depends(depend_sess_file)]
|
62
63
|
):
|
@@ -72,7 +73,6 @@ async def upload(
|
|
72
73
|
|
73
74
|
# Handle parameter.
|
74
75
|
file_store = FileStore(ServerConfig.server.api_file_dir)
|
75
|
-
file_name = file.filename
|
76
76
|
file_bytes = await file.read()
|
77
77
|
file_md5 = get_md5(file_bytes)
|
78
78
|
file_size = len(file_bytes)
|
@@ -93,7 +93,7 @@ async def upload(
|
|
93
93
|
## Information.
|
94
94
|
table_info = DatabaseORMTableInfo(
|
95
95
|
md5=file_md5,
|
96
|
-
name=
|
96
|
+
name=name,
|
97
97
|
note=note
|
98
98
|
)
|
99
99
|
await sess.add(table_info)
|
@@ -105,7 +105,7 @@ async def upload(
|
|
105
105
|
return {'file_id': file_id}
|
106
106
|
|
107
107
|
|
108
|
-
def build_file_db(
|
108
|
+
def build_file_db() -> None:
|
109
109
|
"""
|
110
110
|
Check and build `file` database tables.
|
111
111
|
"""
|
reyserver/rserver.py
CHANGED
@@ -80,7 +80,7 @@ class Server(ServerBase, Singleton):
|
|
80
80
|
self.app = FastAPI(
|
81
81
|
dependencies=depend,
|
82
82
|
lifespan=lifespan,
|
83
|
-
debug=True
|
83
|
+
# debug=True
|
84
84
|
)
|
85
85
|
|
86
86
|
## Static.
|
@@ -114,7 +114,7 @@ class Server(ServerBase, Singleton):
|
|
114
114
|
return {'message': 'test'}
|
115
115
|
|
116
116
|
|
117
|
-
def add_api_file(self, file_dir: str = 'file'
|
117
|
+
def add_api_file(self, file_dir: str = 'file') -> None:
|
118
118
|
"""
|
119
119
|
Add file API.
|
120
120
|
|
@@ -131,4 +131,4 @@ class Server(ServerBase, Singleton):
|
|
131
131
|
|
132
132
|
# Add.
|
133
133
|
self.api_file_dir = file_dir
|
134
|
-
self.app.include_router(file_router, prefix=
|
134
|
+
self.app.include_router(file_router, prefix='/file')
|
@@ -0,0 +1,10 @@
|
|
1
|
+
reyserver/__init__.py,sha256=JmDkcdP7oxmehE53rRRL_zhxmPinAbJRONpQp5qhsGI,340
|
2
|
+
reyserver/rall.py,sha256=6vqacf9erEfVfK5sgGJMDXD1h4ebt5gDN7NrPdtELms,248
|
3
|
+
reyserver/rbase.py,sha256=khBk6N0G33hstiisDWtz4Tdg1tvnFrGszOynBtnKxsI,2305
|
4
|
+
reyserver/rclient.py,sha256=OjY_OEH_USrJK8TuCevXG6jNPVbM0lN-xMBozB7kSM8,2195
|
5
|
+
reyserver/rfile.py,sha256=wf56tItty7Jbjcwvh1yMgcX2jlSSXAYbTDKnA5dI8Yw,7459
|
6
|
+
reyserver/rserver.py,sha256=SfGs0W6StFtRtJ_UYI_avlL99euw7VvP55248mSOjLw,3387
|
7
|
+
reyserver-1.1.45.dist-info/METADATA,sha256=N4nGN_EC1Czdd7Q5DIHr4mxM3NNiPQCgjDenIZJ25yg,1658
|
8
|
+
reyserver-1.1.45.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
9
|
+
reyserver-1.1.45.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
10
|
+
reyserver-1.1.45.dist-info/RECORD,,
|
@@ -1,10 +0,0 @@
|
|
1
|
-
reyserver/__init__.py,sha256=JmDkcdP7oxmehE53rRRL_zhxmPinAbJRONpQp5qhsGI,340
|
2
|
-
reyserver/rall.py,sha256=6vqacf9erEfVfK5sgGJMDXD1h4ebt5gDN7NrPdtELms,248
|
3
|
-
reyserver/rbase.py,sha256=PXqgNMVZfy8JEziX_GlMNAel_usmwN7s9ssJEJXdTRM,2338
|
4
|
-
reyserver/rclient.py,sha256=rrqTPT_Y8zY9KIoPALKcIFUADg8HTa2YH9782tfGp3c,642
|
5
|
-
reyserver/rfile.py,sha256=JhHQSvJRa4Hq3qsHCE_UwoS0QPHtk7mw60KcC0YFe8E,7464
|
6
|
-
reyserver/rserver.py,sha256=sbuCkCF1-B2ZcYctapU3PrcqyLaETcumgipA_vYhGgQ,3400
|
7
|
-
reyserver-1.1.44.dist-info/METADATA,sha256=GJ4qp0xSxiku6Yp9FZrkaY-qQxCfVHuG_JM0RKfZJIc,1658
|
8
|
-
reyserver-1.1.44.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
9
|
-
reyserver-1.1.44.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
10
|
-
reyserver-1.1.44.dist-info/RECORD,,
|
File without changes
|
File without changes
|