python-engineio 4.11.2__py3-none-any.whl → 4.12.0__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.
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,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: python-engineio
3
- Version: 4.11.2
3
+ Version: 4.12.0
4
4
  Summary: Engine.IO server and client for Python
5
5
  Author-email: Miguel Grinberg <miguel.grinberg@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/miguelgrinberg/python-engineio
@@ -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
@@ -24,8 +24,8 @@ engineio/async_drivers/gevent_uwsgi.py,sha256=m6ay5dov9FDQl0fbeiKeE-Orh5LiF6zLlY
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.0.dist-info/licenses/LICENSE,sha256=yel9Pbwfu82094CLKCzWRtuIev9PUxP-a76NTDFAWpw,1082
28
+ python_engineio-4.12.0.dist-info/METADATA,sha256=HxYDzbHszrXZD-Vqks_mdmOQigZRAi0bLEHIr6IinRM,2259
29
+ python_engineio-4.12.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
30
+ python_engineio-4.12.0.dist-info/top_level.txt,sha256=u8PmNisCZLwRYcWrNLe9wutQ2tt4zNi8IH362c-HWuA,9
31
+ python_engineio-4.12.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5