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 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 reydb import DatabaseAsync
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(self): ...
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=file_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(self) -> None:
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', prefix='/file') -> None:
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=prefix)
134
+ self.app.include_router(file_router, prefix='/file')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reyserver
3
- Version: 1.1.44
3
+ Version: 1.1.45
4
4
  Summary: Backend server method set.
5
5
  Project-URL: homepage, https://github.com/reyxbo/reyserver/
6
6
  Author-email: Rey <reyxbo@163.com>
@@ -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,,