def call_api(action, params, **options): return_error = options.get("return_error") params = utils.sign_request(params, options) param_list = [] for k, v in params.items(): if isinstance(v, list): for vv in v: param_list.append((k + "[]", vv)) elif v: param_list.append((k, v)) api_url = utils.cloudinary_api_url(action, **options) global _initialized if not _initialized: _initialized = True # Register the streaming http handlers with urllib2 register_openers() datagen = "" headers = {} if "file" in options: file = options["file"] if not isinstance(file, basestring): datagen, headers = multipart_encode({'file': file}) elif not re.match( r'^https?:|^s3:|^data:[^;]*;base64,([a-zA-Z0-9\/+\n=]+)$', file): datagen, headers = multipart_encode({'file': open(file, "rb")}) else: param_list.append(("file", file)) request = urllib2.Request(api_url + "?" + urllib.urlencode(param_list), datagen, headers) request.add_header("User-Agent", cloudinary.USER_AGENT) code = 200 try: response = urllib2.urlopen(request).read() except urllib2.HTTPError, e: if not e.code in [200, 400, 500]: raise Error("Server returned unexpected status code - %d - %s" % (e.code, e.read())) code = e.code response = e.read()
def call_api(action, params, **options): return_error = options.get("return_error") params = utils.sign_request(params, options) param_list = [] for k, v in params.items(): if isinstance(v, list): for vv in v: param_list.append((k+"[]", vv)) elif v: param_list.append((k, v)) api_url = utils.cloudinary_api_url(action, **options) global _initialized if not _initialized: _initialized = True # Register the streaming http handlers with urllib2 register_openers() datagen = "" headers = {} if "file" in options: file = options["file"] if not isinstance(file, basestring): datagen, headers = multipart_encode({'file': file}) elif not re.match(r'^https?:|^s3:|^data:[^;]*;base64,([a-zA-Z0-9\/+\n=]+)$', file): datagen, headers = multipart_encode({'file': open(file, "rb")}) else: param_list.append(("file", file)) request = urllib2.Request(api_url + "?" + urllib.urlencode(param_list), datagen, headers) request.add_header("User-Agent", cloudinary.USER_AGENT) code = 200 try: response = urllib2.urlopen(request).read() except urllib2.HTTPError, e: if not e.code in [200, 400, 500]: raise Error("Server returned unexpected status code - %d - %s" % (e.code, e.read())) code = e.code response = e.read()
def call_api(action, params, http_headers={}, return_error=False, unsigned=False, file=None, timeout=None, **options): try: file_io = None if unsigned: params = utils.cleanup_params(params) else: params = utils.sign_request(params, options) param_list = [] for k, v in params.items(): if isinstance(v, list): for vv in v: param_list.append((k+"[]", vv)) elif v: param_list.append((k, v)) api_url = utils.cloudinary_api_url(action, **options) global _initialized if not _initialized: _initialized = True # Register the streaming http handlers with urllib2 register_openers() datagen, headers = multipart_encode({}) if file: if not isinstance(file, string_types): datagen, headers = multipart_encode({'file': file}) elif not re.match(r'ftp:|https?:|s3:|data:[^;]*;base64,([a-zA-Z0-9\/+\n=]+)$', file): file_io = open(file, "rb") datagen, headers = multipart_encode({'file': file_io}) else: param_list.append(("file", file)) if _is_gae(): # Might not be needed in the future but for now this is needed in GAE datagen = "".join(datagen) request = urllib2.Request(api_url + "?" + urlencode(param_list), datagen, headers) request.add_header("User-Agent", cloudinary.get_user_agent()) for k, v in http_headers.items(): request.add_header(k, v) kw = {} if timeout is not None: kw['timeout'] = timeout code = 200 try: response = urllib2.urlopen(request, **kw).read() except HTTPError: e = sys.exc_info()[1] if not e.code in [200, 400, 500]: raise Error("Server returned unexpected status code - %d - %s" % (e.code, e.read())) code = e.code response = e.read() except urllib2.URLError: e = sys.exc_info()[1] raise Error("Error - %s" % str(e)) except socket.error: e = sys.exc_info()[1] raise Error("Socket error: %s" % str(e)) try: result = json.loads(to_string(response)) except Exception: e = sys.exc_info()[1] # Error is parsing json raise Error("Error parsing server response (%d) - %s. Got - %s", code, response, e) if "error" in result: if return_error: result["error"]["http_code"] = code else: raise Error(result["error"]["message"]) return result finally: if file_io: file_io.close()
def call_api(action, params, http_headers={}, return_error=False, unsigned=False, file=None, timeout=None, **options): try: file_io = None if unsigned: params = utils.cleanup_params(params) else: params = utils.sign_request(params, options) param_list = [] for k, v in params.items(): if isinstance(v, list): for vv in v: param_list.append((k + "[]", vv)) elif v: param_list.append((k, v)) api_url = utils.cloudinary_api_url(action, **options) global _initialized if not _initialized: _initialized = True # Register the streaming http handlers with urllib2 register_openers() if file: if not isinstance(file, string_types): param_list.append(("file", file)) elif not re.match( r'ftp:|https?:|s3:|data:[^;]*;base64,([a-zA-Z0-9\/+\n=]+)$', file): file_io = open(file, "rb") param_list.append(('file', file_io)) else: param_list.append(("file", file)) datagen, headers = multipart_encode(param_list) if _is_gae(): # Might not be needed in the future but for now this is needed in GAE datagen = "".join(datagen) request = urllib2.Request(api_url, datagen, headers) request.add_header("User-Agent", cloudinary.get_user_agent()) for k, v in http_headers.items(): request.add_header(k, v) kw = {} if timeout is not None: kw['timeout'] = timeout code = 200 try: response = urllib2.urlopen(request, **kw).read() except HTTPError: e = sys.exc_info()[1] if not e.code in [200, 400, 500]: raise Error( "Server returned unexpected status code - %d - %s" % (e.code, e.read())) code = e.code response = e.read() except urllib2.URLError: e = sys.exc_info()[1] raise Error("Error - %s" % str(e)) except socket.error: e = sys.exc_info()[1] raise Error("Socket error: %s" % str(e)) try: result = json.loads(to_string(response)) except Exception: e = sys.exc_info()[1] # Error is parsing json raise Error("Error parsing server response (%d) - %s. Got - %s", code, response, e) if "error" in result: if return_error: result["error"]["http_code"] = code else: raise Error(result["error"]["message"]) return result finally: if file_io: file_io.close()
def call_api(action, params, **options): try: file_io = None return_error = options.get("return_error") if options.get("unsigned"): params = utils.cleanup_params(params) else: params = utils.sign_request(params, options) param_list = [] for k, v in params.items(): if isinstance(v, list): for vv in v: param_list.append((k+"[]", vv)) elif v: param_list.append((k, v)) api_url = utils.cloudinary_api_url(action, **options) global _initialized if not _initialized: _initialized = True # Register the streaming http handlers with urllib2 register_openers() datagen = to_bytes("") headers = {} if "file" in options: file = options["file"] if not isinstance(file, string_types): datagen, headers = multipart_encode({'file': file}) elif not re.match(r'^https?:|^s3:|^data:[^;]*;base64,([a-zA-Z0-9\/+\n=]+)$', file): file_io = open(file, "rb") datagen, headers = multipart_encode({'file': file_io}) else: param_list.append(("file", file)) request = urllib2.Request(api_url + "?" + urlencode(param_list), datagen, headers) request.add_header("User-Agent", cloudinary.USER_AGENT) kw = {} if 'timeout' in options: kw['timeout'] = options['timeout'] code = 200 try: response = urllib2.urlopen(request, **kw).read() except socket.error: e = sys.exc_info()[1] raise Error("Socket error: %s" % str(e)) except urllib2.HTTPError: e = sys.exc_info()[1] if not e.code in [200, 400, 500]: raise Error("Server returned unexpected status code - %d - %s" % (e.code, e.read())) code = e.code response = e.read() try: result = json.loads(to_string(response)) except Exception: e = sys.exc_info()[1] # Error is parsing json raise Error("Error parsing server response (%d) - %s. Got - %s", code, response, e) if "error" in result: if return_error: result["error"]["http_code"] = code else: raise Error(result["error"]["message"]) return result finally: if file_io: file_io.close()
def call_api(action, params, **options): try: file_io = None return_error = options.get("return_error") if options.get("unsigned"): params = utils.cleanup_params(params) else: params = utils.sign_request(params, options) param_list = [] for k, v in params.items(): if isinstance(v, list): for vv in v: param_list.append((k + "[]", vv)) elif v: param_list.append((k, v)) api_url = utils.cloudinary_api_url(action, **options) global _initialized if not _initialized: _initialized = True # Register the streaming http handlers with urllib2 register_openers() datagen = to_bytes("") headers = {} if "file" in options: file = options["file"] if not isinstance(file, string_types): datagen, headers = multipart_encode({'file': file}) elif not re.match( r'^https?:|^s3:|^data:[^;]*;base64,([a-zA-Z0-9\/+\n=]+)$', file): file_io = open(file, "rb") datagen, headers = multipart_encode({'file': file_io}) else: param_list.append(("file", file)) request = urllib2.Request(api_url + "?" + urlencode(param_list), datagen, headers) request.add_header("User-Agent", cloudinary.USER_AGENT) code = 200 try: response = urllib2.urlopen(request).read() except urllib2.HTTPError: e = sys.exc_info()[1] if not e.code in [200, 400, 500]: raise Error( "Server returned unexpected status code - %d - %s" % (e.code, e.read())) code = e.code response = e.read() try: result = json.loads(to_string(response)) except Exception: e = sys.exc_info()[1] # Error is parsing json raise Error("Error parsing server response (%d) - %s. Got - %s", code, response, e) if "error" in result: if return_error: result["error"]["http_code"] = response.code else: raise Error(result["error"]["message"]) return result finally: if file_io: file_io.close()