satori-python-server 0.14.0__tar.gz → 0.14.2__tar.gz
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.
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/PKG-INFO +1 -1
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/pyproject.toml +1 -1
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/src/satori/server/__init__.py +14 -11
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/src/satori/server/adapter.py +5 -0
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/src/satori/server/model.py +3 -0
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/.mina/server.toml +0 -0
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/LICENSE +0 -0
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/README.md +0 -0
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/src/satori/server/conection.py +0 -0
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/src/satori/server/deque.py +0 -0
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/src/satori/server/formdata.py +0 -0
- {satori_python_server-0.14.0 → satori_python_server-0.14.2}/src/satori/server/route.py +0 -0
|
@@ -20,7 +20,7 @@ from graia.amnesia.builtins.asgi import UvicornASGIService
|
|
|
20
20
|
from launart import Launart, Service, any_completed
|
|
21
21
|
from loguru import logger
|
|
22
22
|
from starlette.applications import Starlette
|
|
23
|
-
from starlette.datastructures import FormData
|
|
23
|
+
from starlette.datastructures import FormData as FormData
|
|
24
24
|
from starlette.requests import Request as StarletteRequest
|
|
25
25
|
from starlette.responses import JSONResponse, Response
|
|
26
26
|
from starlette.routing import Route, WebSocketRoute
|
|
@@ -34,7 +34,7 @@ from satori.model import Event, ModelBase, Opcode
|
|
|
34
34
|
from .adapter import Adapter as Adapter
|
|
35
35
|
from .conection import WebsocketConnection
|
|
36
36
|
from .deque import Deque
|
|
37
|
-
from .formdata import parse_content_disposition
|
|
37
|
+
from .formdata import parse_content_disposition as parse_content_disposition
|
|
38
38
|
from .model import Provider as Provider
|
|
39
39
|
from .model import Request as Request
|
|
40
40
|
from .model import Router as Router
|
|
@@ -94,6 +94,7 @@ class Server(Service, RouterMixin):
|
|
|
94
94
|
self.path = path
|
|
95
95
|
if self.path and not self.path.startswith("/"):
|
|
96
96
|
self.path = f"/{self.path}"
|
|
97
|
+
self._url = f"http://{host}:{port}{self.path}/{version}"
|
|
97
98
|
self._adapters = []
|
|
98
99
|
self.providers = []
|
|
99
100
|
self.routers = []
|
|
@@ -107,14 +108,13 @@ class Server(Service, RouterMixin):
|
|
|
107
108
|
|
|
108
109
|
def apply(self, item: Provider | Router | Adapter):
|
|
109
110
|
if isinstance(item, Adapter):
|
|
111
|
+
item.ensure_net(self._url)
|
|
110
112
|
self._adapters.append(item)
|
|
111
113
|
self.providers.append(item)
|
|
112
|
-
|
|
113
|
-
self.proxy_url_mapping[proxy_url_pf] = item
|
|
114
|
+
self.proxy_url_mapping[item.id] = item.proxy_urls()
|
|
114
115
|
elif isinstance(item, Provider):
|
|
115
116
|
self.providers.append(item)
|
|
116
|
-
|
|
117
|
-
self.proxy_url_mapping[proxy_url_pf] = item
|
|
117
|
+
self.proxy_url_mapping[item.id] = item.proxy_urls()
|
|
118
118
|
elif isinstance(item, Router):
|
|
119
119
|
self.routers.append(item)
|
|
120
120
|
else:
|
|
@@ -160,7 +160,9 @@ class Server(Service, RouterMixin):
|
|
|
160
160
|
if not provider.authenticate(token):
|
|
161
161
|
return await ws.close(code=3000, reason="Unauthorized")
|
|
162
162
|
logins.extend(await provider.get_logins())
|
|
163
|
-
sequence = body.get("sequence"
|
|
163
|
+
sequence = body.get("sequence")
|
|
164
|
+
if sequence is None:
|
|
165
|
+
sequence = -1
|
|
164
166
|
await connection.send({"op": Opcode.READY, "body": {"logins": [lo.dump() for lo in logins]}})
|
|
165
167
|
self.connections.append(connection)
|
|
166
168
|
logger.debug(f"New connection: {id(connection)}")
|
|
@@ -230,10 +232,11 @@ class Server(Service, RouterMixin):
|
|
|
230
232
|
for provider in self.providers:
|
|
231
233
|
if provider.ensure(platform, self_id):
|
|
232
234
|
return await provider.download_uploaded(platform, self_id, path)
|
|
233
|
-
for
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
235
|
+
for provider in self.providers:
|
|
236
|
+
for proxy_url_pf in self.proxy_url_mapping[provider.id]:
|
|
237
|
+
if url.startswith(proxy_url_pf):
|
|
238
|
+
async with self.session.get(url) as resp:
|
|
239
|
+
return await resp.read()
|
|
237
240
|
raise ValueError(f"Unknown proxy url: {url}")
|
|
238
241
|
|
|
239
242
|
def get_local_file(self, url: str):
|
|
@@ -9,6 +9,8 @@ from .route import RouterMixin
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class Adapter(Service, RouterMixin):
|
|
12
|
+
server_url: str
|
|
13
|
+
|
|
12
14
|
@abstractmethod
|
|
13
15
|
def get_platform(self) -> str: ...
|
|
14
16
|
|
|
@@ -38,3 +40,6 @@ class Adapter(Service, RouterMixin):
|
|
|
38
40
|
@property
|
|
39
41
|
def id(self):
|
|
40
42
|
return f"satori-python.adapter.{self.get_platform()}#{id(self)}"
|
|
43
|
+
|
|
44
|
+
def ensure_net(self, url: str):
|
|
45
|
+
self.server_url = url
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|