Skip to content

Commit c1c4d32

Browse files
committed
feat: add bulk delete options
1 parent 55b562d commit c1c4d32

File tree

6 files changed

+41
-7
lines changed

6 files changed

+41
-7
lines changed

imagekitio/client.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class ImageKit(object):
1212
Main Class What user will use by creating
1313
instance
1414
"""
15+
1516
def __init__(
1617
self,
1718
public_key=None,
@@ -51,6 +52,11 @@ def delete_file(self, file_id: str = None) -> Dict[str, Any]:
5152
"""
5253
return self.file.delete(file_id)
5354

55+
def bulk_delete(self, file_ids: list = None):
56+
"""Delete files in bulk by provided list of ids
57+
"""
58+
return self.file.batch_delete(file_ids)
59+
5460
def purge_cache(self, file_url: str = None) -> Dict[str, Any]:
5561
"""Purge Cache from server by file url
5662
"""

imagekitio/constants/files.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@
1919
"is_private_file",
2020
"custom_coordinates",
2121
"response_fields",
22-
"metadata"
22+
"metadata",
2323
]

imagekitio/constants/url.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
class URL(Enum):
55
BASE_URL = "https://api.imagekit.io/v1/files"
66
PURGE_CACHE = "/purge"
7-
UPLOAD = "/upload"
7+
UPLOAD_URL = "https://upload.imagekit.io/api/v1/files/upload"
8+
BULK_FILE_DELETE = "/batch/deleteByFileIds"

imagekitio/file.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def upload(self, file, file_name, options) -> Dict:
2626
raise TypeError(ERRORS.MISSING_UPLOAD_FILE_PARAMETER.value)
2727
if not file_name:
2828
raise TypeError(ERRORS.MISSING_UPLOAD_FILENAME_PARAMETER.value)
29-
url = URL.BASE_URL.value + URL.UPLOAD.value
29+
url = URL.UPLOAD_URL.value
3030
headers = self.request.create_headers()
3131

3232
files = {
@@ -142,6 +142,27 @@ def delete(self, file_id: str = None) -> Dict:
142142
response = {"error": error, "response": response}
143143
return response
144144

145+
def batch_delete(self, file_ids: list = None):
146+
"""Delete bulk files
147+
Delete files by batch ids
148+
"""
149+
if not file_ids:
150+
raise ValueError("Need to pass ids in list")
151+
url = URL.BASE_URL.value + URL.BULK_FILE_DELETE.value
152+
resp = self.request.request(
153+
method="POST", url=url, headers=self.request.create_headers(), data={"fileIds": file_ids}
154+
)
155+
156+
if resp.status_code > 204:
157+
error = resp.text
158+
response = None
159+
else:
160+
error = None
161+
response = None
162+
163+
response = {"error": error, "response": response}
164+
return response
165+
145166
def purge_cache(self, file_url: str = None) -> Dict[str, Any]:
146167
"""Use from child class to purge cache
147168
"""

sample/sample.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import base64
2-
import os
32
import sys
43

54
sys.path.append("..")
@@ -92,8 +91,10 @@
9291

9392
print("-------------------------------------")
9493
list_files = imagekit.list_files({"skip": 0, "limit": 2})
95-
# file_id = list_files["response"][0]["url"]
96-
94+
bulk_ids = [
95+
list_files["response"][0]["fileId"],
96+
list_files["response"][1]["fileId"],
97+
]
9798
print("List files-", "\n", list_files)
9899

99100
upload = imagekit.upload(
@@ -181,3 +182,8 @@
181182
print(
182183
"Phash distance-", imagekit.phash_distance("f06830ca9f1e3e90", "f06830ca9f1e3e90"),
183184
)
185+
186+
print("-------------------------------------")
187+
188+
189+
print("Bulk File delete-", imagekit.bulk_delete(bulk_ids))

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
description="Python wrapper for the ImageKit API",
1010
long_description=long_description,
1111
long_description_content_type="text/markdown",
12-
install_requires=['requests==2.20.1'],
12+
install_requires=["requests==2.20.1"],
1313
url="https://github.com/imagekit-developer/imagekit-python",
1414
packages=setuptools.find_packages(),
1515
classifiers=[

0 commit comments

Comments
 (0)