def test_upload_data_uri(self): """should successfully upload file by unicode url """ result = uploader.upload(u"data:image/png;base64,iVBORw0KGgoAA\nAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0l\nEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6\nP9/AFGGFyjOXZtQAAAAAElFTkSuQmCC") self.assertEqual(result["width"], 16) self.assertEqual(result["height"], 16) expected_signature = utils.api_sign_request(dict(public_id=result["public_id"], version=result["version"]), cloudinary.config().api_secret) self.assertEqual(result["signature"], expected_signature)
def test_upload(self): """should successfully upload file """ result = uploader.upload("tests/logo.png") self.assertEqual(result["width"], 241) self.assertEqual(result["height"], 51) expected_signature = utils.api_sign_request(dict(public_id=result["public_id"], version=result["version"]), cloudinary.config().api_secret) self.assertEqual(result["signature"], expected_signature)
def test_upload_url(self): """should successfully upload file by url """ result = uploader.upload("http://cloudinary.com/images/old_logo.png", tags=TEST_TAG) self.assertEqual(result["width"], TEST_IMAGE_WIDTH) self.assertEqual(result["height"], TEST_IMAGE_HEIGHT) expected_signature = utils.api_sign_request(dict(public_id=result["public_id"], version=result["version"]), cloudinary.config().api_secret) self.assertEqual(result["signature"], expected_signature)
def test_upload_unicode_url(self): """should successfully upload file by unicode url """ result = uploader.upload(u"http://cloudinary.com/images/old_logo.png") self.assertEqual(result["width"], 241) self.assertEqual(result["height"], 51) expected_signature = utils.api_sign_request(dict(public_id=result["public_id"], version=result["version"]), cloudinary.config().api_secret) self.assertEqual(result["signature"], expected_signature)
def test_upload(self): """should successfully upload file """ result = uploader.upload(TEST_IMAGE, tags=[UNIQUE_TAG]) self.assertEqual(result["width"], TEST_IMAGE_WIDTH) self.assertEqual(result["height"], TEST_IMAGE_HEIGHT) expected_signature = utils.api_sign_request(dict(public_id=result["public_id"], version=result["version"]), cloudinary.config().api_secret) self.assertEqual(result["signature"], expected_signature)
def test_upload_unicode_url(self): """should successfully upload file by unicode url """ unicode_image_url = u"{}".format(REMOTE_TEST_IMAGE) result = uploader.upload(unicode_image_url, tags=[UNIQUE_TAG]) self.assertEqual(result["width"], TEST_IMAGE_WIDTH) self.assertEqual(result["height"], TEST_IMAGE_HEIGHT) expected_signature = utils.api_sign_request( dict(public_id=result["public_id"], version=result["version"]), cloudinary.config().api_secret) self.assertEqual(result["signature"], expected_signature)
def test_upload_large_url(self): """Should allow fallback of upload large with remote url to regular upload""" resource4 = uploader.upload_large(REMOTE_TEST_IMAGE, tags=[UNIQUE_TAG]) self.assertEqual(resource4["width"], TEST_IMAGE_WIDTH) self.assertEqual(resource4["height"], TEST_IMAGE_HEIGHT) expected_signature = utils.api_sign_request( dict(public_id=resource4["public_id"], version=resource4["version"]), cloudinary.config().api_secret) self.assertEqual(resource4["signature"], expected_signature)
def cloudinary_direct_upload(callback_url, **options): params = uploader.build_upload_params(callback=callback_url, **options) params["signature"] = utils.api_sign_request(params, cloudinary.config().api_secret) params["api_key"] = cloudinary.config().api_key api_url = utils.cloudinary_api_url("upload", resource_type=options.get("resource_type", "image"), upload_prefix=options.get("upload_prefix")) for k, v in params.items(): if not v: del params[k] return {"params": params, "url": api_url}
def call_api(action, params, **options): return_error = options.get("return_error") api_key = options.get("api_key", cloudinary.config().api_key) if not api_key: raise Exception("Must supply api_key") api_secret = options.get("api_secret", cloudinary.config().api_secret) if not api_secret: raise Exception("Must supply api_secret") params["signature"] = utils.api_sign_request(params, api_secret) params["api_key"] = api_key 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?:', 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) code = 200 try: response = urllib2.urlopen(request).read() except urllib2.HTTPError, e: if not e.code in [200, 400, 500]: raise Exception("Server returned unexpected status code - %d - %s" % (e.code, e.read())) code = e.code response = e.read()
def validate(self): expected = utils.api_sign_request({"public_id": self.public_id, "version": self.version}, config().api_secret) return self.signature == expected
def get_expected_signature(self): return utils.api_sign_request({"public_id": self.public_id, "version": self.version}, config().api_secret)
def get_signature(self, params_to_sign): signature = utils.api_sign_request(params_to_sign, self.secret) return signature