From a29947f298e508a23425c9c151281a81a67904f5 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Mon, 7 Aug 2017 07:27:28 -0500 Subject: [PATCH] websocket_messaging in Python 3 #1696, thanks hirolau --- gluon/contrib/websocket_messaging.py | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/gluon/contrib/websocket_messaging.py b/gluon/contrib/websocket_messaging.py index ae8fbc4f..962e42a2 100644 --- a/gluon/contrib/websocket_messaging.py +++ b/gluon/contrib/websocket_messaging.py @@ -94,32 +94,10 @@ import optparse import time import sys import gluon.utils - -if (sys.version_info[0] == 2): - from urllib import urlencode, urlopen - def to_bytes(obj, charset='utf-8', errors='strict'): - if obj is None: - return None - if isinstance(obj, (bytes, bytearray, buffer)): - return bytes(obj) - if isinstance(obj, unicode): - return obj.encode(charset, errors) - raise TypeError('Expected bytes') -else: - from urllib.request import urlopen - from urllib.parse import urlencode - def to_bytes(obj, charset='utf-8', errors='strict'): - if obj is None: - return None - if isinstance(obj, (bytes, bytearray, memoryview)): - return bytes(obj) - if isinstance(obj, str): - return obj.encode(charset, errors) - raise TypeError('Expected bytes') +from gluon._compat import to_native, to_bytes, urlencode, urlopen listeners, names, tokens = {}, {}, {} - def websocket_send(url, message, hmac_key=None, group='default'): sig = hmac_key and hmac.new(to_bytes(hmac_key), to_bytes(message)).hexdigest() or '' params = urlencode( @@ -138,8 +116,8 @@ class PostHandler(tornado.web.RequestHandler): if hmac_key and not 'signature' in self.request.arguments: self.send_error(401) if 'message' in self.request.arguments: - message = self.request.arguments['message'][0] - group = self.request.arguments.get('group', ['default'])[0] + message = self.request.arguments['message'][0].decode(encoding='UTF-8') + group = self.request.arguments.get('group', ['default'])[0].decode(encoding='UTF-8') print('%s:MESSAGE to %s:%s' % (time.time(), group, message)) if hmac_key: signature = self.request.arguments['signature'][0]