Skip to content

Commit 2e71c22

Browse files
Return environ dictionary for a client
1 parent 9b26bfd commit 2e71c22

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

socketio/server.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,16 @@ def transport(self, sid):
534534
"""
535535
return self.eio.transport(sid)
536536

537+
def get_environ(self, sid, namespace=None):
538+
"""Return the WSGI environ dictionary for a client.
539+
540+
:param sid: The session of the client.
541+
:param namespace: The Socket.IO namespace. If this argument is omitted
542+
the default namespace is used.
543+
"""
544+
eio_sid = self.manager.eio_sid_from_sid(sid, namespace or '/')
545+
return self.environ.get(eio_sid)
546+
537547
def handle_request(self, environ, start_response):
538548
"""Handle an HTTP request from the client.
539549

tests/common/test_server.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,14 @@ def is_asyncio_based(self):
746746
with pytest.raises(ValueError):
747747
s.register_namespace(AsyncNS())
748748

749+
def test_get_environ(self, eio):
750+
s = server.Server()
751+
s._handle_eio_connect('123', 'environ')
752+
s._handle_eio_message('123', '0')
753+
sid = s.manager.sid_from_eio_sid('123', '/')
754+
assert s.get_environ(sid) == 'environ'
755+
assert s.get_environ('foo') is None
756+
749757
def test_logger(self, eio):
750758
s = server.Server(logger=False)
751759
assert s.logger.getEffectiveLevel() == logging.ERROR

0 commit comments

Comments
 (0)