Example #1
0
    def _call(self, host, method, params, secret=None, timeout=2500):
        # default to json
        params['format'] = params.get('format', 'json')

        if secret:
            params['signature'] = self._generateSignature(params, secret)

        # force to utf8 to fix ascii codec errors
        encoded_params = []
        for k, v in list(params.items()):
            if type(v) in [list, tuple]:
                v = [e.encode("utf-8") for e in v]
                v = []
                for e in v:
                    if type(e).__name__ == 'bytes':
                        e = e.decode("ascii").encode("utf-8")
                    else:
                        e = e.encode("utf-8")
                    v.append(e)
            else:
                if type(v).__name__ == 'bytes':
                    v.decode("ascii").encode("utf-8")
                else:
                    v = v.encode("utf-8")
            encoded_params.append((k, v))
        params = dict(encoded_params)

        request = "http://%(host)s/%(method)s?%(params)s" % {
            'host': host,
            'method': method,
            'params': urllib.parse.urlencode(params, doseq=1)
        }
        try:
            http_response = bitly_http.get(request,
                                           timeout,
                                           user_agent=self.user_agent)
            if http_response['http_status_code'] != 200:
                raise BitlyError(500, http_response['result'])
            if not http_response['result'].startswith(b'{'):
                raise BitlyError(500, http_response['result'])
            data = json.loads(http_response['result'].decode("utf-8"))
            if data.get('status_code', 500) != 200:
                raise BitlyError(data.get('status_code', 500),
                                 data.get('status_txt', 'UNKNOWN_ERROR'))
            return data
        except BitlyError:
            raise
        except:
            raise BitlyError(None, sys.exc_info()[1])
Example #2
0
 def _make_request(self, request, timeout=2500):
     try:
         http_response = bitly_http.get(request, timeout, user_agent = self.user_agent)
         if http_response['http_status_code'] != 200:
             raise BitlyError(500, http_response['result'])
         if not http_response['result'].startswith('{'):
             raise BitlyError(500, http_response['result'])
         data = json.loads(http_response['result'])
         if data.get('status_code', 500) != 200:
             raise BitlyError(data.get('status_code', 500), data.get('status_txt', 'UNKNOWN_ERROR'))
         return data
     except BitlyError:
         raise
     except:
         raise BitlyError(None, sys.exc_info()[1])
Example #3
0
    def _call(self, host, method, params, secret=None, timeout=5000):
        params['format'] = params.get('format', 'json') # default to json

        if self.access_token:
            scheme = 'https'
            params['access_token'] = self.access_token
            host = self.ssl_host
        else:
            scheme = 'http'
            params['login'] = self.login
            params['apiKey'] = self.api_key
            
        
        if secret:
            params['signature'] = self._generateSignature(params, secret)
        
        # force to utf8 to fix ascii codec errors
        encoded_params = []
        for k,v in params.items():
            if isinstance(v, (list, tuple)):
                v = [_utf8(e) for e in v]
            else:
                v = _utf8(v)
            encoded_params.append((k,v))
        params = dict(encoded_params)
        
        request = "%(scheme)s://%(host)s/%(method)s?%(params)s" % {
            'scheme': scheme,
            'host': host,
            'method': method,
            'params': urllib.urlencode(params, doseq=1)
            }

        try:
            http_response = bitly_http.get(request, timeout, user_agent = self.user_agent)
            if http_response['http_status_code'] != 200:
                raise BitlyError(500, http_response['result'])
            if not http_response['result'].startswith('{'):
                raise BitlyError(500, http_response['result'])
            data = json.loads(http_response['result'])
            if data.get('status_code', 500) != 200:
                raise BitlyError(data.get('status_code', 500), data.get('status_txt', 'UNKNOWN_ERROR'))
            return data
        except BitlyError:
            raise
        except Exception:
            raise BitlyError(None, sys.exc_info()[1])
Example #4
0
    def _call(self, host, method, params, secret=None, timeout=5000):
        params['format'] = params.get('format', 'json') # default to json

        if self.access_token:
            scheme = 'https'
            params['access_token'] = self.access_token
            host = self.ssl_host
        else:
            scheme = 'http'
            params['login'] = self.login
            params['apiKey'] = self.api_key
            
        
        if secret:
            params['signature'] = self._generateSignature(params, secret)
        
        # force to utf8 to fix ascii codec errors
        encoded_params = []
        for k,v in params.items():
            if isinstance(v, (list, tuple)):
                v = [_utf8(e) for e in v]
            else:
                v = _utf8(v)
            encoded_params.append((k,v))
        params = dict(encoded_params)
        
        request = "%(scheme)s://%(host)s/%(method)s?%(params)s" % {
            'scheme': scheme,
            'host': host,
            'method': method,
            'params': urllib.urlencode(params, doseq=1)
            }

        try:
            http_response = bitly_http.get(request, timeout, user_agent = self.user_agent)
            if http_response['http_status_code'] != 200:
                raise BitlyError(500, http_response['result'])
            if not http_response['result'].startswith('{'):
                raise BitlyError(500, http_response['result'])
            data = json.loads(http_response['result'])
            if data.get('status_code', 500) != 200:
                raise BitlyError(data.get('status_code', 500), data.get('status_txt', 'UNKNOWN_ERROR'))
            return data
        except BitlyError:
            raise
        except Exception:
            raise BitlyError(None, sys.exc_info()[1])
Example #5
0
    def _call(self, host, method, params, secret=None, timeout=2500):
        # default to json
        params["format"] = params.get("format", "json")

        if secret:
            params["signature"] = self._generateSignature(params, secret)

        # force to utf8 to fix ascii codec errors
        encoded_params = []
        for k, v in list(params.items()):
            if type(v) in [list, tuple]:
                v = [e.encode("utf-8") for e in v]
                v = []
                for e in v:
                    if type(e).__name__ == "bytes":
                        e = e.decode("ascii").encode("utf-8")
                    else:
                        e = e.encode("utf-8")
                    v.append(e)
            else:
                if type(v).__name__ == "bytes":
                    v.decode("ascii").encode("utf-8")
                else:
                    v = v.encode("utf-8")
            encoded_params.append((k, v))
        params = dict(encoded_params)

        request = "http://%(host)s/%(method)s?%(params)s" % {
            "host": host,
            "method": method,
            "params": urllib.parse.urlencode(params, doseq=1),
        }
        try:
            http_response = bitly_http.get(request, timeout, user_agent=self.user_agent)
            if http_response["http_status_code"] != 200:
                raise BitlyError(500, http_response["result"])
            if not http_response["result"].startswith(b"{"):
                raise BitlyError(500, http_response["result"])
            data = json.loads(http_response["result"].decode("utf-8"))
            if data.get("status_code", 500) != 200:
                raise BitlyError(data.get("status_code", 500), data.get("status_txt", "UNKNOWN_ERROR"))
            return data
        except BitlyError:
            raise
        except:
            raise BitlyError(None, sys.exc_info()[1])
 def _call(self, host, method, params, secret=None, timeout=2500):
     # default to json
     params['format']=params.get('format','json')
     
     if secret:
         params['signature'] = self._generateSignature(params, secret)
     
     # force to utf8 to fix ascii codec errors
     encoded_params = []
     for k,v in params.items():
         if type(v) in [types.ListType, types.TupleType]:
             v = [e.encode('UTF8') for e in v]
         else:
             v = v.encode('UTF8')
         encoded_params.append((k,v))
     params = dict(encoded_params)
     
     request = "https://%(host)s/%(method)s?%(params)s" % {
         'host':host,
         'method':method,
         'params':urllib.urlencode(params, doseq=1)
         }
     try:
         http_response = bitly_http.get(request, timeout, user_agent = self.user_agent)
         if http_response['http_status_code'] != 200:
             raise BitlyError(500, http_response['result'])
         if not http_response['result'].startswith('{'):
             raise BitlyError(500, http_response['result'])
         data = json.loads(http_response['result'])
         if data.get('status_code', 500) != 200:
             raise BitlyError(data.get('status_code', 500), data.get('status_txt', 'UNKNOWN_ERROR'))
         return data
     except BitlyError:
         raise
     except:
         raise BitlyError(None, sys.exc_info()[1])