@@ -36,7 +36,8 @@ class Pusher(object):
3636 :param backend: an http adapter class (AsyncIOBackend, RequestsBackend, SynchronousBackend, TornadoBackend)
3737 :param backend_options: additional backend
3838 """
39- def __init__ (self , app_id , key , secret , ssl = True , host = None , port = None , timeout = 5 , cluster = None , backend = RequestsBackend , ** backend_options ):
39+ def __init__ (self , app_id , key , secret , ssl = True , host = None , port = None , timeout = 5 , cluster = None ,
40+ json_encoder = None , json_decoder = None , backend = RequestsBackend , ** backend_options ):
4041 self ._app_id = ensure_text (app_id , "app_id" )
4142 if not app_id_re .match (self ._app_id ):
4243 raise ValueError ("Invalid app id" )
@@ -62,6 +63,8 @@ def __init__(self, app_id, key, secret, ssl=True, host=None, port=None, timeout=
6263 if not isinstance (timeout , six .integer_types ):
6364 raise TypeError ("timeout should be an integer" )
6465 self ._timeout = timeout
66+ self ._json_encoder = json_encoder
67+ self ._json_decoder = json_decoder
6568
6669 self .http = backend (self , ** backend_options )
6770
@@ -139,7 +142,7 @@ def trigger(self, channels, event_name, data, socket_id=None):
139142 if isinstance (data , six .string_types ):
140143 data = ensure_text (data , "data" )
141144 else :
142- data = json .dumps (data )
145+ data = json .dumps (data , cls = self . _json_encoder )
143146
144147 if len (data ) > 10240 :
145148 raise ValueError ("Too much data" )
@@ -208,7 +211,7 @@ def authenticate(self, channel, socket_id, custom_data=None):
208211 socket_id = ensure_text (socket_id , "socket_id" )
209212
210213 if custom_data :
211- custom_data = json .dumps (custom_data )
214+ custom_data = json .dumps (custom_data , cls = self . _json_encoder )
212215
213216 string_to_sign = "%s:%s" % (socket_id , channel )
214217
@@ -244,15 +247,14 @@ def validate_webhook(self, key, signature, body):
244247 return None
245248
246249 try :
247- body_data = json .loads (body )
250+ body_data = json .loads (body , cls = self . _json_decoder )
248251 except ValueError :
249252 return None
250253
251254 time_ms = body_data .get ('time_ms' )
252255 if not time_ms :
253256 return None
254257
255- print (abs (time .time ()* 1000 - time_ms ))
256258 if abs (time .time ()* 1000 - time_ms ) > 300000 :
257259 return None
258260
0 commit comments