diff --git a/imagekitio/file.py b/imagekitio/file.py index 995e28f..92092ee 100644 --- a/imagekitio/file.py +++ b/imagekitio/file.py @@ -330,8 +330,7 @@ def copy_file( url = "{}/v1/files/copy".format(URL.API_BASE_URL) headers = {"Content-Type": "application/json"} headers.update(self.request.create_headers()) - formatted_options = dumps(request_formatter(options.__dict__)) - print("here formatted options:--->", formatted_options) + formatted_options = dumps(request_formatter(options.__dict__)) if options is not None else dict() resp = self.request.request( method="Post", url=url, headers=headers, data=formatted_options ) diff --git a/imagekitio/models/results/FileResult.py b/imagekitio/models/results/FileResult.py index 187dbdb..2263f5b 100644 --- a/imagekitio/models/results/FileResult.py +++ b/imagekitio/models/results/FileResult.py @@ -12,7 +12,7 @@ def __init__( updated_at, file_id, tags, - ai_tags: List[dict] = [], + ai_tags: List[AITags] = [], version_info: dict = {}, embedded_metadata: dict = {}, custom_coordinates: str = "", @@ -38,7 +38,9 @@ def __init__( self.ai_tags: List[AITags] = [] if ai_tags is not None: for i in ai_tags: - self.ai_tags.append(AITags(i["name"], i["confidence"], i["source"])) + self.ai_tags.append(AITags(i["name"] if "name" in i else None, + i["confidence"] if "confidence" in i else None, + i["source"] if 'source' in i else None)) self.version_info = VersionInfo(version_info["id"], version_info["name"]) self.embedded_metadata = embedded_metadata self.custom_coordinates = custom_coordinates diff --git a/imagekitio/models/results/FileResultWithResponseMetadata.py b/imagekitio/models/results/FileResultWithResponseMetadata.py index eafbef1..bc1f6a9 100644 --- a/imagekitio/models/results/FileResultWithResponseMetadata.py +++ b/imagekitio/models/results/FileResultWithResponseMetadata.py @@ -11,10 +11,10 @@ def __init__( self, type, name, - created_at, - updated_at, - file_id, - tags, + created_at=None, + updated_at=None, + file_id=None, + tags=None, ai_tags: List[AITags] = AITags(None, None, None), version_info: VersionInfo = VersionInfo(None, None), embedded_metadata=None, diff --git a/tests/test_custom_metadata_fields_ops.py b/tests/test_custom_metadata_fields_ops.py index 68d8812..eddf066 100644 --- a/tests/test_custom_metadata_fields_ops.py +++ b/tests/test_custom_metadata_fields_ops.py @@ -21,7 +21,6 @@ class TestCustomMetadataFields(ClientTestCase): field_id = "field_id" - @responses.activate def test_get_custom_metadata_fields_fails_on_unauthenticated_request(self): """ @@ -34,8 +33,8 @@ def test_get_custom_metadata_fields_fails_on_unauthenticated_request(self): responses.GET, url, status=403, - body="'message': 'Your account cannot be authenticated.'" - ", 'help': 'For support kindly contact us at support@imagekit.io .'", + body='''{"message": "Your account cannot be authenticated." + , "help": "For support kindly contact us at support@imagekit.io ."}''', ) self.client.get_custom_metadata_fields(True) self.assertRaises(ForbiddenException) diff --git a/tests/test_files_ops.py b/tests/test_files_ops.py index f59465c..9b2437d 100644 --- a/tests/test_files_ops.py +++ b/tests/test_files_ops.py @@ -60,6 +60,40 @@ def test_upload_fails_on_unauthenticated_request(self): body="""{"message": "Your account cannot be authenticated." , "help": "For support kindly contact us at support@imagekit.io ."}""", ) + self.client.upload_file( + file=self.image, + file_name=self.filename, + options=UploadFileRequestOptions( + use_unique_file_name=False, + tags=["abc", "def"], + folder="/testing-python-folder/", + is_private_file=False, + custom_coordinates="10,10,20,20", + response_fields=[ + "tags", + "custom_coordinates", + "is_private_file", + "embedded_metadata", + "custom_metadata", + ], + extensions=( + { + "name": "remove-bg", + "options": {"add_shadow": True, "bg_color": "pink"}, + }, + { + "name": "google-auto-tagging", + "minConfidence": 80, + "maxTags": 10, + }, + ), + webhook_url="https://webhook.site/c78d617f-33bc-40d9-9e61-608999721e2e", + overwrite_file=True, + overwrite_a_i_tags=False, + overwrite_tags=False, + overwrite_custom_metadata=True, + custom_metadata={"testss": 12}, + )) self.assertRaises(ForbiddenException) except ForbiddenException as e: self.assertEqual(e.message, "Your account cannot be authenticated.") @@ -142,40 +176,63 @@ def test_binary_upload_succeeds(self): ), ) mock_response_metadata = { - "raw": { - "fileId": "fake_file_id1234", - "name": "file_name.jpg", - "size": 102117, - "versionInfo": {"id": "62d670648cdb697522602b45", "name": "Version 11"}, - }, - "httpStatusCode": 200, - "headers": { - "Content-Type": "text/plain", - "Accept-Encoding": "gzip, deflate", - "Authorization": "Basic ZmFrZTEyMjo=", + 'headers': { + 'Content-Type': 'text/plain', + 'Accept-Encoding': 'gzip, deflate', + 'Authorization': 'Basic ZmFrZTEyMjo=' }, + 'http_status_code': 200, + 'raw': { + 'AITags': [{ + 'confidence': 97.66, + 'name': 'Computer', + 'source': 'google-auto-tagging' + }, { + 'confidence': 94.96, + 'name': 'Personal computer', + 'source': 'google-auto-tagging' + }], + 'extensionStatus': { + 'google-auto-tagging': 'success', + 'remove-bg': 'pending' + }, + 'fileId': 'fake_file_id1234', + 'filePath': '/testing-python-folder/file_name.jpg', + 'fileType': 'image', + 'height': 700, + 'isPrivateFile': True, + 'name': 'file_name.jpg', + 'size': 102117, + 'tags': ['abc', 'def'], + 'thumbnailUrl': 'https://ik.imagekit.io/your_imagekit_id/tr:n-ik_ml_thumbnail/testing-python-folder/file_name.jpg', + 'url': 'https://ik.imagekit.io/your_imagekit_id/testing-python-folder/file_name.jpg', + 'versionInfo': { + 'id': '62d670648cdb697522602b45', + 'name': 'Version 11' + }, + 'width': 1050 + } } - request_body = make_string_to_single_line( - """{'customMetadata': '{"test100": 11}', - 'extensions': '[{"name": "remove-bg", "options": {"add_shadow": true, ' - '"bg_color": "pink"}}, {"name": "google-auto-tagging", ' - '"minConfidence": 80, "maxTags": 10}]', - 'file': "<_io.BufferedReader name='sample.jpg'>", - 'fileName': 'file_name.jpg', - 'folder': '/testing-python-folder/', - 'isPrivateFile': 'true', - 'overwriteAITags': 'false', - 'overwriteCustomMetadata': 'true', - 'overwriteFile': 'true', - 'overwriteTags': 'false', - 'responseFields': 'isPrivateFile,tags', - 'tags': 'abc,def', - 'useUniqueFileName': 'false', - 'webhookUrl': 'url'}""" - ) + request_body = make_string_to_single_line("""{ + \'file\': \"<_io.BufferedReader name=\'sample.jpg\'>\", + \'fileName\': \'file_name.jpg\', + \'useUniqueFileName\': \'false\', + \'tags\': \'abc,def\', + \'folder\': \'/testing-python-folder/\', + \'isPrivateFile\': \'true\', + \'responseFields\': \'isPrivateFile,tags\', + \'extensions\': \'[{\"name\": \"remove-bg\", \"options\": {\"add_shadow\": true, \"bg_color\": \"pink\"}}, + {\"name\": \"google-auto-tagging\", \"minConfidence\": 80, \"maxTags\": 10}]\', + \'webhookUrl\': \'url\', + \'overwriteFile\': \'true\', + \'overwriteAITags\': \'false\', + \'overwriteTags\': \'false\', + \'overwriteCustomMetadata\': \'true\', + \'customMetadata\': \'{\"test100\": 11}\' + }""") actual_body = responses.calls[0].request.body.__dict__.__getitem__("fields") actual_body["file"] = "<_io.BufferedReader name='sample.jpg'>" - self.assertEqual(request_body, actual_body) + self.assertEqual(request_body, str(actual_body)) self.assertEqual( camel_dict_to_snake_dict(mock_response_metadata), resp.response_metadata.__dict__, @@ -214,13 +271,11 @@ def test_upload_fails_with_400_exception(self) -> None: responses.POST, url, status=400, - body=json.dumps( - { + body='''{ "message": "A file with the same name already exists at the exact location. We " "could not overwrite it because both overwriteFile and " "useUniqueFileName are set to false." - } - ), + }''' ) self.client.upload_file( file=self.image, @@ -341,8 +396,7 @@ def test_list_files_succeeds_with_basic_request(self) -> None: headers=headers, match=[ matchers.query_string_matcher( - "type=file&sort=ASC_CREATED&path=%2F&search_query=created_at+%3E%3D+%272d%27+OR+size+%3C+%272mb%27+OR+format%3D%27png%27&file_type=all&limit=1&skip=0&tags=Tag-1%2C+Tag-2%2C+Tag-3" - ) + "%7B%22type%22:%20%22file%22,%20%22sort%22:%20%22ASC_CREATED%22,%20%22path%22:%20%22/%22,%20%22searchQuery%22:%20%22created_at%20%3E=%20'2d'%20OR%20size%20%3C%20'2mb'%20OR%20format='png'%22,%20%22fileType%22:%20%22all%22,%20%22limit%22:%201,%20%22skip%22:%200,%20%22tags%22:%20%22Tag-1,%20Tag-2,%20Tag-3%22%7D") ], ) @@ -390,7 +444,7 @@ def test_list_files_succeeds_with_basic_request(self) -> None: ], } self.assertEqual( - "http://test.com/v1/files?type=file&sort=ASC_CREATED&path=%2F&search_query=created_at+%3E%3D+%272d%27+OR+size+%3C+%272mb%27+OR+format%3D%27png%27&file_type=all&limit=1&skip=0&tags=Tag-1%2C+Tag-2%2C+Tag-3", + "http://test.com/v1/files?%7B%22type%22:%20%22file%22,%20%22sort%22:%20%22ASC_CREATED%22,%20%22path%22:%20%22/%22,%20%22searchQuery%22:%20%22created_at%20%3E=%20'2d'%20OR%20size%20%3C%20'2mb'%20OR%20format='png'%22,%20%22fileType%22:%20%22all%22,%20%22limit%22:%201,%20%22skip%22:%200,%20%22tags%22:%20%22Tag-1,%20Tag-2,%20Tag-3%22%7D", responses.calls[0].request.url, ) self.assertEqual( @@ -415,7 +469,7 @@ def test_list_files_fails_with_400_exception(self) -> None: "help": "For support kindly contact us at support@imagekit.io ."}""", match=[ matchers.query_string_matcher( - "type=file&sort=ASC_CREATED&path=%2F&search_query=created_at+%3E%3D+%272d%27+OR+size+%3C+%272mb%27+OR+format%3D%27png%27&file_type=all&limit=1&skip=0&tags=Tag-1%2C+Tag-2%2C+Tag-3" + "%7B%22type%22:%20%22file%22,%20%22sort%22:%20%22ASC_CREATED%22,%20%22path%22:%20%22/%22,%20%22searchQuery%22:%20%22created_at%20%3E=%20'2d'%20OR%20size%20%3C%20'2mb'%20OR%20format='png'%22,%20%22fileType%22:%20%22all%22,%20%22limit%22:%201,%20%22skip%22:%200,%20%22tags%22:%20%22Tag-1,%20Tag-2,%20Tag-3%22%7D" ) ], ) @@ -469,81 +523,87 @@ def test_file_details_succeeds_with_id(self) -> None: responses.GET, url, body="""{ - "type": "file", - "name": "new_car.jpg", - "createdAt": "2022-06-15T11:34:36.294Z", - "customCoordinates": "null", - "customMetadata": {"test10": 11, "test100": 10}, - "embeddedMetadata": { - "DateCreated": "2022-07-04T10:15:50.066Z", - "DateTimeCreated": "2022-07-04T10:15:50.066Z", - }, - "isPrivateFile": false, - "url": "https://ik.imagekit.io/your-imagekit-id/new_car.jpg", - "thumbnail": "https://ik.imagekit.io/your-imagekit-id/tr:n-ik_ml_thumbnail/new_car.jpg", - "fileType": "image", - "filePath": "/new_car.jpg", - "fileType": "image", - "hasAlpha": False, - "height": 354, - "isPrivateFile": False, - "mime": "image/jpeg", - "name": "new_car.jpg", - "size": 7390, - "hasAlpha": false, - "mime": "image/jpeg" - }""", + "type": "file", + "name": "default-image.jpg", + "createdAt": "2022-06-15T08:19:00.843Z", + "updatedAt": "2022-08-19T12:19:22.726Z", + "fileId": "fake_file_id1234", + "tags": [ + "{Software", + " Developer", + " Engineer}", + "tag-to-add-2" + ], + "AITags": null, + "versionInfo": { + "id": "62a995f4d875ec08dc587b72", + "name": "Version 1" + }, + "embeddedMetadata": { + "XResolution": 250, + "YResolution": 250, + "DateCreated": "2022-06-15T08:19:01.523Z", + "DateTimeCreated": "2022-06-15T08:19:01.524Z" + }, + "customCoordinates": "10,10,20,20", + "customMetadata": { + "test100": 10 + }, + "isPrivateFile": false, + "url": "https://ik.imagekit.io/xyxt2lnil/default-image.jpg", + "thumbnail": "https://ik.imagekit.io/xyxt2lnil/tr:n-ik_ml_thumbnail/default-image.jpg", + "fileType": "image", + "filePath": "/default-image.jpg", + "height": 354, + "width": 236, + "size": 23023, + "hasAlpha": false, + "mime": "image/jpeg" + }""", headers=headers, ) resp = self.client.get_file_details(self.file_id) mock_response_metadata = { - "headers": { - "Content-Type": "text/plain", - "Accept-Encoding": "gzip, deflate", - "Authorization": "Basic ZmFrZTEyMjo=", + 'headers': { + 'Content-Type': 'text/plain', + 'Accept-Encoding': 'gzip, deflate', + 'Authorization': 'Basic ZmFrZTEyMjo=' }, - "httpStatusCode": 200, - "raw": { - "AITags": [ - { - "confidence": 98.77, - "name": "Clothing", - "source": "google-auto-tagging", - }, - { - "confidence": 95.31, - "name": "Smile", - "source": "google-auto-tagging", - }, - ], - "createdAt": "2022-06-15T11:34:36.294Z", - "customCoordinates": "null", - "customMetadata": {"test10": 11, "test100": 10}, - "embeddedMetadata": { - "DateCreated": "2022-07-04T10:15:50.066Z", - "DateTimeCreated": "2022-07-04T10:15:50.066Z", + 'http_status_code': 200, + 'raw': { + 'AITags': None, + 'createdAt': '2022-06-15T08:19:00.843Z', + 'customCoordinates': '10,10,20,20', + 'customMetadata': { + 'test100': 10 }, - "fileId": "fake_file_id1234", - "filePath": "/new_car.jpg", - "fileType": "image", - "hasAlpha": False, - "height": 354, - "isPrivateFile": False, - "mime": "image/jpeg", - "name": "new_car.jpg", - "size": 7390, - "tags": ["Tag_1", "Tag_2", "Tag_3"], - "thumbnail": "https://ik.imagekit.io/your-imagekit-id/tr:n-ik_ml_thumbnail/new_car.jpg", - "type": "file", - "updatedAt": "2022-07-04T10:15:50.067Z", - "url": "https://ik.imagekit.io/your-imagekit-id/new_car.jpg", - "versionInfo": { - "id": "62b97749f63122840530fda9", - "name": "Version " "4", + 'embeddedMetadata': { + 'DateCreated': '2022-06-15T08:19:01.523Z', + 'DateTimeCreated': '2022-06-15T08:19:01.524Z', + 'XResolution': 250, + 'YResolution': 250 }, - "width": 236, - }, + 'fileId': 'fake_file_id1234', + 'filePath': '/default-image.jpg', + 'fileType': 'image', + 'hasAlpha': False, + 'height': 354, + 'isPrivateFile': False, + 'mime': 'image/jpeg', + 'name': 'default-image.jpg', + 'size': 23023, + 'tags': ['{Software', ' Developer', ' Engineer}', 'tag-to-add-2'], + 'thumbnail': 'https://ik.imagekit.io/xyxt2lnil/tr:n-ik_ml_thumbnail/default-image.jpg', + 'type': 'file', + 'updatedAt': '2022-08-19T12:19:22.726Z', + 'url': 'https://ik.imagekit.io/xyxt2lnil/default-image.jpg', + 'versionInfo': { + 'id': '62a995f4d875ec08dc587b72', + 'name': 'Version 1' + }, + 'width': 236 + } } self.assertEqual( @@ -1079,50 +1139,50 @@ def test_update_file_details_succeeds_with_id(self): responses.PATCH, url, body="""{ - "type": "file", - "name": "default-image.jpg", - "createdAt": "2022-07-21T10:31:22.529Z", - "updatedAt": "2022-07-21T10:37:11.848Z", - "fileId": "fake_123", - "tags": ["tag1", "tag2"], - "AITags": [ - { + "type": "file", + "name": "default-image.jpg", + "createdAt": "2022-07-21T10:31:22.529Z", + "updatedAt": "2022-07-21T10:37:11.848Z", + "fileId": "fake_123", + "tags": ["tag1", "tag2"], + "AITags": [{ "name": "Corridor", "confidence": 99.39, - "source": "aws-auto-tagging", - }, - { + "source": "aws-auto-tagging" + }, { "name": "Floor", "confidence": 97.59, - "source": "aws-auto-tagging", + "source": "aws-auto-tagging" + }], + "versionInfo": { + "id": "versionId", + "name": "Version 2" }, - ], - "versionInfo": {"id": "versionId", "name": "Version 2"}, - "embeddedMetadata": { - "XResolution": 1, - "YResolution": 1, - "DateCreated": "2022-07-21T10:35:34.497Z", - "DateTimeCreated": "2022-07-21T10:35:34.500Z", - }, - "customCoordinates": "10,10,100,100", - "customMetadata": { - "test": 11 - }, - "isPrivateFile": false, - "url": "https://ik.imagekit.io/your_imagekit_id/default-image.jpg", - "thumbnail": "https://ik.imagekit.io/your_imagekit_id/tr:n-ik_ml_thumbnail/default-image.jpg", - "fileType": "image", - "filePath": "/default-image.jpg", - "height": 1000, - "width": 1000, - "size": 184425, - "hasAlpha": false, - "mime": "image/jpeg", - "extensionStatus": { - "remove-bg": "pending", - "google-auto-tagging": "success" - } - }""", + "embeddedMetadata": { + "XResolution": 1, + "YResolution": 1, + "DateCreated": "2022-07-21T10:35:34.497Z", + "DateTimeCreated": "2022-07-21T10:35:34.500Z" + }, + "customCoordinates": "10,10,100,100", + "customMetadata": { + "test": 11 + }, + "isPrivateFile": false, + "url": "https://ik.imagekit.io/your_imagekit_id/default-image.jpg", + "thumbnail": "https://ik.imagekit.io/your_imagekit_id/tr:n-ik_ml_thumbnail/default-image.jpg", + "fileType": "image", + "filePath": "/default-image.jpg", + "height": 1000, + "width": 1000, + "size": 184425, + "hasAlpha": false, + "mime": "image/jpeg", + "extensionStatus": { + "remove-bg": "pending", + "google-auto-tagging": "success" + } + }""", headers=headers, ) @@ -1163,35 +1223,59 @@ def test_update_file_details_succeeds_with_id(self): tags=["tag1", "tag2"], custom_coordinates="10,10,100,100", custom_metadata={"test": 11}, - ), + ) ) mock_response_metadata = { - "raw": { - "type": "file", - "name": "default-image.jpg", - "createdAt": "2022-07-21T10:31:22.529Z", - "updatedAt": "2022-07-21T10:37:11.848Z", - "fileId": "fake_123", - "tags": ["tag1", "tag2"], - "AITags": [ - { - "name": "Corridor", - "confidence": 99.39, - "source": "aws-auto-tagging", - }, - { - "name": "Floor", - "confidence": 97.59, - "source": "aws-auto-tagging", - }, - ], - "versionInfo": {"id": "versionId", "name": "Version 2"}, - }, - "httpStatusCode": 200, - "headers": { - "Content-Type": "text/plain, application/json", - "Authorization": "Basic ZmFrZTEyMjo=", + 'headers': { + 'Content-Type': 'text/plain, application/json', + 'Authorization': 'Basic ZmFrZTEyMjo=' }, + 'http_status_code': 200, + 'raw': { + 'AITags': [{ + 'confidence': 99.39, + 'name': 'Corridor', + 'source': 'aws-auto-tagging' + }, { + 'confidence': 97.59, + 'name': 'Floor', + 'source': 'aws-auto-tagging' + }], + 'createdAt': '2022-07-21T10:31:22.529Z', + 'customCoordinates': '10,10,100,100', + 'customMetadata': { + 'test': 11 + }, + 'embeddedMetadata': { + 'DateCreated': '2022-07-21T10:35:34.497Z', + 'DateTimeCreated': '2022-07-21T10:35:34.500Z', + 'XResolution': 1, + 'YResolution': 1 + }, + 'extensionStatus': { + 'google-auto-tagging': 'success', + 'remove-bg': 'pending' + }, + 'fileId': 'fake_123', + 'filePath': '/default-image.jpg', + 'fileType': 'image', + 'hasAlpha': False, + 'height': 1000, + 'isPrivateFile': False, + 'mime': 'image/jpeg', + 'name': 'default-image.jpg', + 'size': 184425, + 'tags': ['tag1', 'tag2'], + 'thumbnail': 'https://ik.imagekit.io/your_imagekit_id/tr:n-ik_ml_thumbnail/default-image.jpg', + 'type': 'file', + 'updatedAt': '2022-07-21T10:37:11.848Z', + 'url': 'https://ik.imagekit.io/your_imagekit_id/default-image.jpg', + 'versionInfo': { + 'id': 'versionId', + 'name': 'Version 2' + }, + 'width': 1000 + } } self.assertEqual(request_body, responses.calls[0].request.body) self.assertEqual( @@ -1217,21 +1301,6 @@ def test_update_file_details_fails_with_404_exception(self) -> None: body="""{"message": "The requested file does not exist.", "help": "For support kindly contact us at support@imagekit.io ."}""", ) - - # request_body = { - # "removeAITags": ["ai-tag1", "ai-tag2"], - # "webhookUrl": "url", - # "extensions": [ - # { - # "name": "remove-bg", - # "options": {"add_shadow": True, "bg_color": "red"}, - # }, - # {"name": "google-auto-tagging", "minConfidence": 80, "maxTags": 10}, - # ], - # "tags": ["tag1", "tag2"], - # "customCoordinates": "10,10,100,100", - # "customMetadata": {"test": 11}, - # } self.client.update_file_details( file_id=self.file_id, options=UpdateFileRequestOptions( @@ -1387,10 +1456,8 @@ def test_get_file_versions_succeeds_with_id(self): "test10": 11 }, "isPrivateFile": false, - "url": "https://ik.imagekit.io/your_imagekit_id/new_car.jpg?ik-obj-version - =dlkUlhiJ7I8OTejhKG38GZJBrsvDBcnz", - "thumbnail": "https://ik.imagekit.io/your_imagekit_id/tr:n-ik_ml_thumbnail/new_car.jpg?ik-obj-version - =dlkUlhiJ7I8OTejhKG38GZJBrsvDBcnz", + "url": "https://ik.imagekit.io/your_imagekit_id/new_car.jpg?ik-obj-version =dlkUlhiJ7I8OTejhKG38GZJBrsvDBcnz", + "thumbnail": "https://ik.imagekit.io/your_imagekit_id/tr:n-ik_ml_thumbnail/new_car.jpg?ik-obj-version =dlkUlhiJ7I8OTejhKG38GZJBrsvDBcnz", "fileType": "image", "filePath": "/new_car.jpg", "height": 354, @@ -1403,107 +1470,106 @@ def test_get_file_versions_succeeds_with_id(self): ) resp = self.client.get_file_versions(self.file_id) mock_response_metadata = { - "raw": [ - { - "type": "file", - "name": "new_car.jpg", - "createdAt": "2022-06-15T11:34:36.294Z", - "updatedAt": "2022-07-04T10:15:50.067Z", - "fileId": "fake_123", - "tags": ["Tag_1", "Tag_2", "Tag_3"], - "AITags": [ - { - "name": "Clothing", - "confidence": 98.77, - "source": "google-auto-tagging", - }, - { - "name": "Smile", - "confidence": 95.31, - "source": "google-auto-tagging", - }, - { - "name": "Shoe", - "confidence": 95.2, - "source": "google-auto-tagging", - }, - ], - "versionInfo": {"id": "versionId", "name": "Version 4"}, - "embeddedMetadata": { - "DateCreated": "2022-07-04T10:15:50.066Z", - "DateTimeCreated": "2022-07-04T10:15:50.066Z", - }, - "customCoordinates": None, - "customMetadata": {"test100": 10, "test10": 11}, - "isPrivateFile": False, - "url": "https://ik.imagekit.io/your_imagekit_id/new_car.jpg", - "thumbnail": "https://ik.imagekit.io/your_imagekit_id/tr:n-ik_ml_thumbnail/new_car.jpg", - "fileType": "image", - "filePath": "/new_car.jpg", - "height": 354, - "width": 236, - "size": 7390, - "hasAlpha": False, - "mime": "image/jpeg", + 'headers': { + 'Content-Type': 'text/plain, application/json', + 'Authorization': 'Basic ZmFrZTEyMjo=' + }, + 'http_status_code': 200, + 'raw': [{ + 'AITags': [{ + 'confidence': 98.77, + 'name': 'Clothing', + 'source': 'google-auto-tagging' + }, { + 'confidence': 95.31, + 'name': 'Smile', + 'source': 'google-auto-tagging' + }, { + 'confidence': 95.2, + 'name': 'Shoe', + 'source': 'google-auto-tagging' + }], + 'createdAt': '2022-06-15T11:34:36.294Z', + 'customCoordinates': '', + 'customMetadata': { + 'test10': 11, + 'test100': 10 }, - { - "type": "file-version", - "name": "new_car.jpg", - "createdAt": "2022-07-04T10:15:49.698Z", - "updatedAt": "2022-07-04T10:15:49.734Z", - "fileId": "fileId", - "tags": ["Tag_1", "Tag_2", "Tag_3"], - "AITags": [ - { - "name": "Clothing", - "confidence": 98.77, - "source": "google-auto-tagging", - }, - { - "name": "Smile", - "confidence": 95.31, - "source": "google-auto-tagging", - }, - { - "name": "Shoe", - "confidence": 95.2, - "source": "google-auto-tagging", - }, - { - "name": "Street light", - "confidence": 91.05, - "source": "google-auto-tagging", - }, - ], - "versionInfo": { - "id": "62c2bdd5872375c6b8f40fd4", - "name": "Version 1", - }, - "embeddedMetadata": { - "XResolution": 250, - "YResolution": 250, - "DateCreated": "2022-06-15T11:34:36.702Z", - "DateTimeCreated": "2022-06-15T11:34:36.702Z", - }, - "customCoordinates": "10,10,40,40", - "customMetadata": {"test100": 10, "test10": 11}, - "isPrivateFile": False, - "url": "https://ik.imagekit.io/your_imagekit_id/new_car.jpg?ik-obj-version=dlkUlhiJ7I8OTejhKG38GZJBrsvDBcnz", - "thumbnail": "https://ik.imagekit.io/your_imagekit_id/tr:n-ik_ml_thumbnail/new_car.jpg?ik-obj-version=dlkUlhiJ7I8OTejhKG38GZJBrsvDBcnz", - "fileType": "image", - "filePath": "/new_car.jpg", - "height": 354, - "width": 236, - "size": 23023, - "hasAlpha": False, - "mime": "image/jpeg", + 'embeddedMetadata': { + 'DateCreated': '2022-07-04T10:15:50.066Z', + 'DateTimeCreated': '2022-07-04T10:15:50.066Z' }, - ], - "httpStatusCode": 200, - "headers": { - "Content-Type": "text/plain, application/json", - "Authorization": "Basic ZmFrZTEyMjo=", - }, + 'fileId': 'fake_123', + 'filePath': '/new_car.jpg', + 'fileType': 'image', + 'hasAlpha': False, + 'height': 354, + 'isPrivateFile': False, + 'mime': 'image/jpeg', + 'name': 'new_car.jpg', + 'size': 7390, + 'tags': ['Tag_1', 'Tag_2', 'Tag_3'], + 'thumbnail': 'https://ik.imagekit.io/your_imagekit_id/tr:n-ik_ml_thumbnail/new_car.jpg', + 'type': 'file', + 'updatedAt': '2022-07-04T10:15:50.067Z', + 'url': 'https://ik.imagekit.io/your_imagekit_id/new_car.jpg', + 'versionInfo': { + 'id': 'versionId', + 'name': 'Version 4' + }, + 'width': 236 + }, { + 'AITags': [{ + 'confidence': 98.77, + 'name': 'Clothing', + 'source': 'google-auto-tagging' + }, { + 'confidence': 95.31, + 'name': 'Smile', + 'source': 'google-auto-tagging' + }, { + 'confidence': 95.2, + 'name': 'Shoe', + 'source': 'google-auto-tagging' + }, { + 'confidence': 91.05, + 'name': 'Street light', + 'source': 'google-auto-tagging' + }], + 'createdAt': '2022-07-04T10:15:49.698Z', + 'customCoordinates': '10,10,40,40', + 'customMetadata': { + 'test10': 11, + 'test100': 10 + }, + 'embeddedMetadata': { + 'DateCreated': '2022-06-15T11:34:36.702Z', + 'DateTimeCreated': '2022-06-15T11:34:36.702Z', + 'XResolution': 250, + 'YResolution': 250 + }, + 'fileId': 'fileId', + 'filePath': '/new_car.jpg', + 'fileType': 'image', + 'hasAlpha': False, + 'height': 354, + 'isPrivateFile': False, + 'mime': 'image/jpeg', + 'name': 'new_car.jpg', + 'size': 23023, + 'tags': ['Tag_1', 'Tag_2', 'Tag_3'], + 'thumbnail': 'https://ik.imagekit.io/your_imagekit_id/tr:n-ik_ml_thumbnail/new_car.jpg?ik-obj-version ' + '=dlkUlhiJ7I8OTejhKG38GZJBrsvDBcnz', + 'type': 'file-version', + 'updatedAt': '2022-07-04T10:15:49.734Z', + 'url': 'https://ik.imagekit.io/your_imagekit_id/new_car.jpg?ik-obj-version ' + '=dlkUlhiJ7I8OTejhKG38GZJBrsvDBcnz', + 'versionInfo': { + 'id': '62c2bdd5872375c6b8f40fd4', + 'name': 'Version 1' + }, + 'width': 236 + }] } self.assertEqual( @@ -1575,70 +1641,80 @@ def test_get_file_version_details_succeeds_with_id(self): responses.GET, url, body="""{ - "type": "file-version", - "name": "new_car.jpg", - "createdAt": "2022-06-27T09:24:25.251Z", - "updatedAt": "2022-06-27T12:11:11.247Z", - "fileId": "fake_123", - "tags": ["tagg", "tagg1"], - "AITags": "", - "versionInfo": { - "id": "fake_version_123", - "name": "Version 1" - }, - "embeddedMetadata": { - "XResolution": 250, - "YResolution": 250, - "DateCreated": "2022-06-15T11:34:36.702Z", - "DateTimeCreated": "2022-06-15T11:34:36.702Z", - }, - "customCoordinates": "10,10,20,20", - "customMetadata": { - "test100": 10 - }, - "isPrivateFile": false, - "url": "https://ik.imagekit.io/your-imagekit-id/new_car.jpg?ik-obj-version=hzBNRjaJhZYg.JNu75L2nMDfhjJP4tJH", - "thumbnail": "https://ik.imagekit.io/your-imagekit-id/tr:n-ik_ml_thumbnail/new_car.jpg?ik-obj-version=hzBNRjaJhZYg.JNu75L2nMDfhjJP4tJH", - "fileType": "image", - "filePath": "/new_car.jpg", - "height": 354, - "width": 236, - "size": 23023, - "hasAlpha": false, - "mime": "image/jpeg" - }""", + "type": "file-version", + "name": "new_car.jpg", + "createdAt": "2022-06-27T09:24:25.251Z", + "updatedAt": "2022-06-27T12:11:11.247Z", + "fileId": "fake_123", + "tags": ["tagg", "tagg1"], + "AITags": "", + "versionInfo": { + "id": "fake_version_123", + "name": "Version 1" + }, + "embeddedMetadata": { + "XResolution": 250, + "YResolution": 250, + "DateCreated": "2022-06-15T11:34:36.702Z", + "DateTimeCreated": "2022-06-15T11:34:36.702Z" + }, + "customCoordinates": "10,10,20,20", + "customMetadata": { + "test100": 10 + }, + "isPrivateFile": false, + "url": "https://ik.imagekit.io/your-imagekit-id/new_car.jpg?ik-obj-version=hzBNRjaJhZYg.JNu75L2nMDfhjJP4tJH", + "thumbnail": "https://ik.imagekit.io/your-imagekit-id/tr:n-ik_ml_thumbnail/new_car.jpg?ik-obj-version=hzBNRjaJhZYg.JNu75L2nMDfhjJP4tJH", + "fileType": "image", + "filePath": "/new_car.jpg", + "height": 354, + "width": 236, + "size": 23023, + "hasAlpha": false, + "mime": "image/jpeg" + }""", headers=headers, ) resp = self.client.get_file_version_details(self.file_id, self.version_id) mock_response_metadata = { - "raw": { - "type": "file-version", - "name": "new_car.jpg", - "createdAt": "2022-06-27T09:24:25.251Z", - "updatedAt": "2022-06-27T12:11:11.247Z", - "fileId": "fake_123", - "tags": ["tagg", "tagg1"], - "AITags": "", - "versionInfo": {"id": "fake_version_123", "name": "Version 1"}, - "embeddedMetadata": { - "XResolution": 250, - "YResolution": 250, - "DateCreated": "2022-06-15T11:34:36.702Z", - "DateTimeCreated": "2022-06-15T11:34:36.702Z", - }, - "customCoordinates": "10,10,20,20", - "customMetadata": {"test100": 10}, - "isPrivateFile": False, - "url": "https://ik.imagekit.io/your-imagekit-id/new_car.jpg?ik-obj-version=hzBNRjaJhZYg.JNu75L2nMDfhjJP4tJH", - "thumbnail": "https://ik.imagekit.io/your-imagekit-id/tr:n-ik_ml_thumbnail/new_car.jpg?ik-obj-version=hzBNRjaJhZYg.JNu75L2nMDfhjJP4tJH", - "fileType": "image", - "filePath": "/new_car.jpg", - "height": 354, - "width": 236, - "size": 23023, - "hasAlpha": False, - "mime": "image/jpeg", + 'headers': { + 'Content-Type': 'text/plain, application/json', + 'Authorization': 'Basic ZmFrZTEyMjo=' }, + 'http_status_code': 200, + 'raw': { + 'AITags': '', + 'createdAt': '2022-06-27T09:24:25.251Z', + 'customCoordinates': '10,10,20,20', + 'customMetadata': { + 'test100': 10 + }, + 'embeddedMetadata': { + 'DateCreated': '2022-06-15T11:34:36.702Z', + 'DateTimeCreated': '2022-06-15T11:34:36.702Z', + 'XResolution': 250, + 'YResolution': 250 + }, + 'fileId': 'fake_123', + 'filePath': '/new_car.jpg', + 'fileType': 'image', + 'hasAlpha': False, + 'height': 354, + 'isPrivateFile': False, + 'mime': 'image/jpeg', + 'name': 'new_car.jpg', + 'size': 23023, + 'tags': ['tagg', 'tagg1'], + 'thumbnail': 'https://ik.imagekit.io/your-imagekit-id/tr:n-ik_ml_thumbnail/new_car.jpg?ik-obj-version=hzBNRjaJhZYg.JNu75L2nMDfhjJP4tJH', + 'type': 'file-version', + 'updatedAt': '2022-06-27T12:11:11.247Z', + 'url': 'https://ik.imagekit.io/your-imagekit-id/new_car.jpg?ik-obj-version=hzBNRjaJhZYg.JNu75L2nMDfhjJP4tJH', + 'versionInfo': { + 'id': 'fake_version_123', + 'name': 'Version 1' + }, + 'width': 236 + } } self.assertEqual( @@ -1805,6 +1881,13 @@ def test_copy_file_succeeds(self) -> None: headers.update(create_headers_for_test()) responses.add(responses.POST, url, status=204, headers=headers, body="{}") + resp = self.client.copy_file( + options=CopyFileRequestOptions( + source_file_path=self.source_file_path, + destination_path=self.destination_path, + include_file_versions=True, + )) + mock_response_metadata = { "headers": { "Content-Type": "text/plain, application/json", @@ -1879,6 +1962,11 @@ def test_move_file_succeeds(self) -> None: headers.update(create_headers_for_test()) responses.add(responses.POST, url, status=204, headers=headers, body="{}") + resp = self.client.move_file( + options=MoveFileRequestOptions( + source_file_path=self.source_file_path, + destination_path=self.destination_path, + )) mock_response_metadata = { "headers": { "Content-Type": "text/plain, application/json", @@ -1931,6 +2019,10 @@ def test_rename_file_fails_with_409(self) -> None: "reason": "FILE_ALREADY_EXISTS" }""", ) + self.client.rename_file( + options=RenameFileRequestOptions( + file_path=self.file_path, new_file_name=self.new_file_name + )) self.assertRaises(ConflictException) except ConflictException as e: self.assertEqual( @@ -1954,6 +2046,12 @@ def test_rename_file_succeeds_with_purge_cache(self) -> None: headers=headers, body='{"purgeRequestId": "62de3e986f68334a5a3339fb"}', ) + resp = self.client.rename_file( + options=RenameFileRequestOptions( + file_path=self.file_path, + new_file_name=self.new_file_name, + purge_cache=True, + )) mock_response_metadata = { "headers": { @@ -1970,7 +2068,7 @@ def test_rename_file_succeeds_with_purge_cache(self) -> None: "filePath": "/file_path.jpg", "newFileName": "new_file.jpg", "purgeCache": true - }""" + }""" ) self.assertEqual(request_body, responses.calls[0].request.body) @@ -1992,7 +2090,10 @@ def test_rename_file_succeeds(self) -> None: headers = {"Content-Type": "application/json"} headers.update(create_headers_for_test()) responses.add(responses.PUT, url, headers=headers, body="{}") - + resp = self.client.rename_file( + options=RenameFileRequestOptions( + file_path=self.file_path, new_file_name=self.new_file_name + )) mock_response_metadata = { "headers": { "Content-Type": "text/plain, application/json", @@ -2081,9 +2182,9 @@ def test_restore_file_version_succeeds(self) -> None: "url": "https://ik.imagekit.io/your_imagekit_id/images/products/file1.jpg", "thumbnail": "https://ik.imagekit.io/your_imagekit_id/tr:n-media_library_thumbnail/images/products/file1.jpg", "fileType": "image", - "hasAlpha": False, + "hasAlpha": false, "height": 100, - "isPrivateFile": False, + "isPrivateFile": false, "mime": "image/jpeg", "name": "file1.jpg", "size": 100, @@ -2099,40 +2200,42 @@ def test_restore_file_version_succeeds(self) -> None: resp = self.client.restore_file_version(self.file_id, self.version_id) mock_response_metadata = { - "headers": { - "Content-Type": "text/plain, application/json", - "Accept-Encoding": "gzip, deflate", - "Authorization": "Basic ZmFrZTEyMjo=", - }, - "httpStatusCode": 200, - "raw": { - "AITags": [ - { - "confidence": 90.12, - "name": "Shirt", - "source": "google-auto-tagging", - } - ], - "createdAt": "2019-08-24T06:14:41.313Z", - "customCoordinates": "", - "customMetadata": {"brand": "Nike", "color": "red"}, - "fileId": "fileId", - "filePath": "/images/file.jpg", - "fileType": "image", - "hasAlpha": False, - "height": 100, - "isPrivateFile": False, - "mime": "image/jpeg", - "name": "file1.jpg", - "size": 100, - "tags": ["t-shirt", "round-neck", "sale2019"], - "thumbnail": "https://ik.imagekit.io/your_imagekit_id/tr:n-media_library_thumbnail/images/products/file1.jpg", - "type": "file", - "updatedAt": "2019-09-24T06:14:41.313Z", - "url": "https://ik.imagekit.io/your_imagekit_id/images/products/file1.jpg", - "versionInfo": {"id": "versionId", "name": "Version " "2"}, - "width": 100, + 'headers': { + 'Content-Type': 'text/plain, application/json', + 'Accept-Encoding': 'gzip, deflate', + 'Authorization': 'Basic ZmFrZTEyMjo=' }, + 'http_status_code': 200, + 'raw': { + 'AITags': [{ + 'confidence': 90.12, + 'source': 'google-auto-tagging' + }], + 'createdAt': '2019-08-24T06:14:41.313Z', + 'customCoordinates': '', + 'customMetadata': { + 'brand': 'Nike', + 'color': 'red' + }, + 'fileId': 'fileId', + 'filePath': '/images/file.jpg', + 'fileType': 'image', + 'hasAlpha': False, + 'height': 100, + 'isPrivateFile': False, + 'mime': 'image/jpeg', + 'name': 'file1.jpg', + 'size': 100, + 'tags': ['t-shirt', 'round-neck', 'sale2019'], + 'thumbnail': 'https://ik.imagekit.io/your_imagekit_id/tr:n-media_library_thumbnail/images/products/file1.jpg', + 'type': 'file', + 'updatedAt': '2019-09-24T06:14:41.313Z', + 'url': 'https://ik.imagekit.io/your_imagekit_id/images/products/file1.jpg', + 'versionInfo': { + 'id': 'versionId', + 'name': 'Version 2' + } + } } self.assertEqual(