diff options
Diffstat (limited to 'python-tornado/unassembled/Platform.py')
| -rw-r--r-- | python-tornado/unassembled/Platform.py | 28 | 
1 files changed, 22 insertions, 6 deletions
| diff --git a/python-tornado/unassembled/Platform.py b/python-tornado/unassembled/Platform.py index 501993e..5200136 100644 --- a/python-tornado/unassembled/Platform.py +++ b/python-tornado/unassembled/Platform.py @@ -43,9 +43,13 @@ class Pubnub(PubnubCoreAsync):          self.headers['V'] = self.version          self.http = tornado.httpclient.AsyncHTTPClient(max_clients=1000)          self.id = None -        self._channel_list_lock = None +         +    def _request( self, request, callback=None, error=None, single=False ) : + +        def _invoke(func, data): +            if func is not None: +                func(data) -    def _request( self, request, callback, single=False ) :          url = self.getUrl(request)          request = tornado.httpclient.HTTPRequest( url, 'GET', self.headers, connect_timeout=10, request_timeout=310 )          if single is True: @@ -56,18 +60,30 @@ class Pubnub(PubnubCoreAsync):              if single is True:                  if not id == self.id:                      return None  - +                                  body = response._get_body() +              if body is None:                  return - +            #print(body)              def handle_exc(*args):                  return True              if response.error is not None:                  with ExceptionStackContext(handle_exc):                      response.rethrow() -            elif callback: -                callback(eval(response._get_body())) +                    return +            try: +                data = json.loads(body) +            except TypeError as e: +                try: +                    data = json.loads(body.decode("utf-8")) +                except: +                    _invoke(error, {'error' : 'json decode error'}) + +            if 'error' in data and 'status' in data and 'status' != 200: +                _invoke(error, data) +            else: +                _invoke(callback, data)          self.http.fetch(              request=request, | 
