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 _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])
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])
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])