python-engineio 4.11.2__py3-none-any.whl → 4.12.1__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.
@@ -280,7 +280,12 @@ class WebSocket: # pragma: no cover
280
280
  event = await self.asgi_receive()
281
281
  if event['type'] != 'websocket.receive':
282
282
  raise OSError()
283
- return event.get('bytes') or event.get('text')
283
+ if 'bytes' in event:
284
+ return event['bytes']
285
+ elif 'text' in event:
286
+ return event['text']
287
+ else: # pragma: no cover
288
+ raise OSError()
284
289
 
285
290
 
286
291
  _async = {
engineio/base_server.py CHANGED
@@ -282,29 +282,33 @@ class BaseServer:
282
282
  'response': message.encode('utf-8')}
283
283
 
284
284
  def _cors_allowed_origins(self, environ):
285
- default_origins = []
286
- if 'wsgi.url_scheme' in environ and 'HTTP_HOST' in environ:
287
- default_origins.append('{scheme}://{host}'.format(
288
- scheme=environ['wsgi.url_scheme'], host=environ['HTTP_HOST']))
289
- if 'HTTP_X_FORWARDED_PROTO' in environ or \
290
- 'HTTP_X_FORWARDED_HOST' in environ:
291
- scheme = environ.get(
292
- 'HTTP_X_FORWARDED_PROTO',
293
- environ['wsgi.url_scheme']).split(',')[0].strip()
294
- default_origins.append('{scheme}://{host}'.format(
295
- scheme=scheme, host=environ.get(
296
- 'HTTP_X_FORWARDED_HOST', environ['HTTP_HOST']).split(
297
- ',')[0].strip()))
298
285
  if self.cors_allowed_origins is None:
299
- allowed_origins = default_origins
286
+ allowed_origins = []
287
+ if 'wsgi.url_scheme' in environ and 'HTTP_HOST' in environ:
288
+ allowed_origins.append('{scheme}://{host}'.format(
289
+ scheme=environ['wsgi.url_scheme'],
290
+ host=environ['HTTP_HOST']))
291
+ if 'HTTP_X_FORWARDED_PROTO' in environ or \
292
+ 'HTTP_X_FORWARDED_HOST' in environ:
293
+ scheme = environ.get(
294
+ 'HTTP_X_FORWARDED_PROTO',
295
+ environ['wsgi.url_scheme']).split(',')[0].strip()
296
+ allowed_origins.append('{scheme}://{host}'.format(
297
+ scheme=scheme, host=environ.get(
298
+ 'HTTP_X_FORWARDED_HOST',
299
+ environ['HTTP_HOST']).split(
300
+ ',')[0].strip()))
300
301
  elif self.cors_allowed_origins == '*':
301
302
  allowed_origins = None
302
303
  elif isinstance(self.cors_allowed_origins, str):
303
304
  allowed_origins = [self.cors_allowed_origins]
304
305
  elif callable(self.cors_allowed_origins):
305
306
  origin = environ.get('HTTP_ORIGIN')
306
- allowed_origins = [origin] \
307
- if self.cors_allowed_origins(origin) else []
307
+ try:
308
+ is_allowed = self.cors_allowed_origins(origin, environ)
309
+ except TypeError:
310
+ is_allowed = self.cors_allowed_origins(origin)
311
+ allowed_origins = [origin] if is_allowed else []
308
312
  else:
309
313
  allowed_origins = self.cors_allowed_origins
310
314
  return allowed_origins
engineio/packet.py CHANGED
@@ -72,11 +72,11 @@ class Packet:
72
72
  else:
73
73
  self.packet_type = int(encoded_packet[0])
74
74
  try:
75
- self.data = self.json.loads(encoded_packet[1:])
76
- if isinstance(self.data, int):
75
+ if encoded_packet[1].isnumeric():
77
76
  # do not allow integer payloads, see
78
77
  # github.com/miguelgrinberg/python-engineio/issues/75
79
78
  # for background on this decision
80
79
  raise ValueError
81
- except ValueError:
80
+ self.data = self.json.loads(encoded_packet[1:])
81
+ except (ValueError, IndexError):
82
82
  self.data = encoded_packet[1:]
@@ -1,14 +1,14 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: python-engineio
3
- Version: 4.11.2
3
+ Version: 4.12.1
4
4
  Summary: Engine.IO server and client for Python
5
5
  Author-email: Miguel Grinberg <miguel.grinberg@gmail.com>
6
+ License: MIT
6
7
  Project-URL: Homepage, https://github.com/miguelgrinberg/python-engineio
7
8
  Project-URL: Bug Tracker, https://github.com/miguelgrinberg/python-engineio/issues
8
9
  Classifier: Environment :: Web Environment
9
10
  Classifier: Intended Audience :: Developers
10
11
  Classifier: Programming Language :: Python :: 3
11
- Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Operating System :: OS Independent
13
13
  Requires-Python: >=3.6
14
14
  Description-Content-Type: text/markdown
@@ -21,6 +21,7 @@ Provides-Extra: asyncio-client
21
21
  Requires-Dist: aiohttp>=3.4; extra == "asyncio-client"
22
22
  Provides-Extra: docs
23
23
  Requires-Dist: sphinx; extra == "docs"
24
+ Dynamic: license-file
24
25
 
25
26
  python-engineio
26
27
  ===============
@@ -3,13 +3,13 @@ engineio/async_client.py,sha256=ZrK9j_sUNKRwjqeT6W26d1TtjoGAp2nULhIbX_1iivs,2944
3
3
  engineio/async_server.py,sha256=8Af_uwf8mKOCJGqVKa3QN0kz7_B2K1cdpSmsvkAoBR4,27412
4
4
  engineio/async_socket.py,sha256=nHY0DPPk0FtI9djUnQWtzZ3ce2OD184Tu-Dop7JLg9I,10715
5
5
  engineio/base_client.py,sha256=uEI6OglvhdIGD1DAZuptbn0KXQMk_o3w0AH4wJvPwZ0,5322
6
- engineio/base_server.py,sha256=H-aKQ9hMQjiIrjDaqbw_edw9yUVIbCQMzyIy9egLv-g,14458
6
+ engineio/base_server.py,sha256=S_O5ZWSzdKn4CBC3UjrhZ_Oarw35ge3Gmg5M3CV5C9k,14653
7
7
  engineio/base_socket.py,sha256=sQqbNSfGhMQG3xzwar6IXMal28C7Q5TIAQRGp74Wt2o,399
8
8
  engineio/client.py,sha256=wfgB_MrpEh-v4dBt6W2eW6i0CRNEP0CIJ6d4Ap4CnZE,27227
9
9
  engineio/exceptions.py,sha256=FyuMb5qhX9CUYP3fEoe1m-faU96ApdQTSbblaaoo8LA,292
10
10
  engineio/json.py,sha256=SG5FTojqd1ix6u0dKXJsZVqqdYioZLO4S2GPL7BKl3U,405
11
11
  engineio/middleware.py,sha256=5NKBXz-ftuFErUB_V9IDvRHaSOsjhtW-NnuJtquB1nc,3750
12
- engineio/packet.py,sha256=Tejm9U5JcYs5LwZ_n_Xh0PIRv-U_JbHwGEivNXQN4eg,3181
12
+ engineio/packet.py,sha256=YO3gmeKUoKyIsUq2e1z7Zifr5PGeS3gnaCeqR7wj5hQ,3198
13
13
  engineio/payload.py,sha256=GIWu0Vnay4WNZlDxHqVgP34tKTBXX58OArJ-mO5zD3E,1539
14
14
  engineio/server.py,sha256=4_xdtH0tyusigQurwOeDFrHtodthFTOIbOVZ-_ckh5U,22957
15
15
  engineio/socket.py,sha256=Oaw1E7ZDyOCaS7KV151g1u9rqOf1JJHh5gttEU0cSeA,10342
@@ -17,15 +17,15 @@ engineio/static_files.py,sha256=pwez9LQFaSQXMbtI0vLyD6UDiokQ4rNfmRYgVLKOthc,2064
17
17
  engineio/async_drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  engineio/async_drivers/_websocket_wsgi.py,sha256=LuOEfKhbAw8SplB5PMpYKIUqfCPEadQEpqeiq_leOIA,949
19
19
  engineio/async_drivers/aiohttp.py,sha256=OBDGhaNXWHxQkwhzZT2vlTAOqWReGS6Sjk9u3BEh_Mc,3754
20
- engineio/async_drivers/asgi.py,sha256=mBu109j7R6esH-wI62jvTnfVAEjWvw2YNp0dZ74NyHg,11210
20
+ engineio/async_drivers/asgi.py,sha256=v0FlBQT6iHmrhlDbVAM5ZjLni22utLiV0f5XyDeTlzY,11343
21
21
  engineio/async_drivers/eventlet.py,sha256=n1y4OjPdj4J2GIep5N56O29oa5NQgFJVcTBjyO1C-Gs,1735
22
22
  engineio/async_drivers/gevent.py,sha256=hnJHeWdDQE2jfoLCP5DnwVPzsQlcTLJUMA5EVf1UL-k,2962
23
23
  engineio/async_drivers/gevent_uwsgi.py,sha256=m6ay5dov9FDQl0fbeiKeE-Orh5LiF6zLlYQ64Oa3T5g,5954
24
24
  engineio/async_drivers/sanic.py,sha256=GYX8YWR1GbRm-GkMTAQkfkWbY12MOT1IV2DzH0Xx8Ns,4495
25
25
  engineio/async_drivers/threading.py,sha256=ywmG59d4H6OHZjKarBN97-9BHEsRxFEz9YN-E9QAu_I,463
26
26
  engineio/async_drivers/tornado.py,sha256=mbVHs1mECfzFSNv33uigkpTBtNPT0u49k5zaybewdIo,5893
27
- python_engineio-4.11.2.dist-info/LICENSE,sha256=yel9Pbwfu82094CLKCzWRtuIev9PUxP-a76NTDFAWpw,1082
28
- python_engineio-4.11.2.dist-info/METADATA,sha256=WfrX2DOOQdxr6FoiFDIuNe8lorFgUdilJYBfWuD2-Kw,2237
29
- python_engineio-4.11.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
30
- python_engineio-4.11.2.dist-info/top_level.txt,sha256=u8PmNisCZLwRYcWrNLe9wutQ2tt4zNi8IH362c-HWuA,9
31
- python_engineio-4.11.2.dist-info/RECORD,,
27
+ python_engineio-4.12.1.dist-info/licenses/LICENSE,sha256=yel9Pbwfu82094CLKCzWRtuIev9PUxP-a76NTDFAWpw,1082
28
+ python_engineio-4.12.1.dist-info/METADATA,sha256=wiaRuG1XGttR3GGc2Xm7hP9opjQC-PRAANPplk3gq3c,2221
29
+ python_engineio-4.12.1.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
30
+ python_engineio-4.12.1.dist-info/top_level.txt,sha256=u8PmNisCZLwRYcWrNLe9wutQ2tt4zNi8IH362c-HWuA,9
31
+ python_engineio-4.12.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (80.4.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5