Skip to content

Commit 38e50cc

Browse files
authored
Merge pull request #30 from amanforindia/api-implementation
Api implementation
2 parents d0cd96b + 0904e9d commit 38e50cc

File tree

85 files changed

+7629
-1431
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+7629
-1431
lines changed

.github/workflows/publish.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@ on:
77
jobs:
88
deploy:
99
runs-on: ubuntu-latest
10+
strategy:
11+
matrix:
12+
python: [3.6, 3.7, 3.8, 3.9, '3.10']
1013
steps:
1114
- uses: actions/checkout@v1
1215
- name: Set up Python
1316
uses: actions/setup-python@v1
1417
with:
15-
python-version: "3.x"
18+
python-version: ${{ matrix.python }}
1619
- name: Install Tox and any other packages
1720
run: |
1821
python -m pip install --upgrade pip

.github/workflows/test.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ jobs:
77
runs-on: ubuntu-latest
88
strategy:
99
matrix:
10-
python: [3.7, 3.8]
11-
10+
python: [3.6, 3.7, 3.8, 3.9, '3.10']
1211
steps:
1312
- uses: actions/checkout@v1
1413
- name: Setup Python

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ parts/
2020
sdist/
2121
var/
2222
wheels/
23+
sample/
2324
pip-wheel-metadata/
2425
share/python-wheels/
2526
*.egg-info/

README.md

Lines changed: 1105 additions & 229 deletions
Large diffs are not rendered by default.

imagekitio/client.py

Lines changed: 182 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,42 @@
22

33
from .constants.errors import ERRORS
44
from .file import File
5+
from .models.CopyFileRequestOptions import CopyFileRequestOptions
6+
from .models.CopyFolderRequestOptions import CopyFolderRequestOptions
7+
from .models.CreateCustomMetadataFieldsRequestOptions import (
8+
CreateCustomMetadataFieldsRequestOptions,
9+
)
10+
from .models.CreateFolderRequestOptions import CreateFolderRequestOptions
11+
from .models.DeleteFolderRequestOptions import DeleteFolderRequestOptions
12+
from .models.ListAndSearchFileRequestOptions import ListAndSearchFileRequestOptions
13+
from .models.MoveFileRequestOptions import MoveFileRequestOptions
14+
from .models.MoveFolderRequestOptions import MoveFolderRequestOptions
15+
from .models.RenameFileRequestOptions import RenameFileRequestOptions
16+
from .models.UpdateCustomMetadataFieldsRequestOptions import (
17+
UpdateCustomMetadataFieldsRequestOptions,
18+
)
19+
from .models.UpdateFileRequestOptions import UpdateFileRequestOptions
20+
from .models.UploadFileRequestOptions import UploadFileRequestOptions
21+
from .models.results.BulkDeleteFileResult import BulkDeleteFileResult
22+
from .models.results.CustomMetadataFieldsResultWithResponseMetadata import (
23+
CustomMetadataFieldsResultWithResponseMetadata,
24+
)
25+
from .models.results.FileResultWithResponseMetadata import (
26+
FileResultWithResponseMetadata,
27+
)
28+
from .models.results.FolderResult import FolderResult
29+
from .models.results.GetBulkJobStatusResult import GetBulkJobStatusResult
30+
from .models.results.GetMetadataResult import GetMetadataResult
31+
from .models.results.ListCustomMetadataFieldsResult import (
32+
ListCustomMetadataFieldsResult,
33+
)
34+
from .models.results.ListFileResult import ListFileResult
35+
from .models.results.PurgeCacheResult import PurgeCacheResult
36+
from .models.results.PurgeCacheStatusResult import PurgeCacheStatusResult
37+
from .models.results.RenameFileResult import RenameFileResult
38+
from .models.results.ResponseMetadataResult import ResponseMetadataResult
39+
from .models.results.TagsResult import TagsResult
40+
from .models.results.UploadFileResult import UploadFileResult
541
from .resource import ImageKitRequest
642
from .url import Url
743
from .utils.calculation import get_authenticated_params, hamming_distance
@@ -27,96 +63,190 @@ def __init__(
2763
self.file = File(self.ik_request)
2864
self.url_obj = Url(self.ik_request)
2965

30-
def upload(self, file=None, file_name=None, options=None) -> Dict[str, Any]:
31-
"""Provides upload functionality
32-
"""
66+
def upload(self, file=None, file_name=None, options=None) -> UploadFileResult:
67+
"""Provides upload functionality"""
3368
return self.file.upload(file, file_name, options)
3469

35-
def upload_file(self, file=None, file_name=None, options=None) -> Dict[str, Any]:
36-
"""Provides upload functionality
37-
"""
38-
return self.file.upload(file, file_name, options)
70+
def upload_file(
71+
self, file=None, file_name=None, options: UploadFileRequestOptions = None
72+
) -> UploadFileResult:
73+
"""Provides upload functionality"""
74+
return self.file.upload(
75+
file, file_name, options if options is not None else None
76+
)
3977

40-
def list_files(self, options: Dict) -> Dict:
41-
"""Get list(filtered if given param) of images of client
42-
"""
78+
def list_files(
79+
self, options: ListAndSearchFileRequestOptions = None
80+
) -> ListFileResult:
81+
"""Get list(filtered if given param) of images of client"""
4382
return self.file.list(options)
4483

45-
def get_file_details(self, file_identifier: str = None) -> Dict:
46-
"""Get file_detail by file_id or file_url
47-
"""
48-
return self.file.details(file_identifier)
84+
def get_file_details(self, file_id: str = None) -> FileResultWithResponseMetadata:
85+
"""Get file_detail by file_id or file_url"""
86+
return self.file.details(file_id)
87+
88+
def get_file_versions(self, file_id: str = None) -> ListFileResult:
89+
"""Get file_version by file_id or file_url"""
90+
return self.file.get_file_versions(file_id)
4991

50-
def update_file_details(self, file_id: str, options: dict = None) -> Dict:
51-
"""Update file detail by file id and options
52-
"""
92+
def get_file_version_details(
93+
self, file_id: str = None, version_id: str = None
94+
) -> FileResultWithResponseMetadata:
95+
"""Get file_version details by file_id and version_id"""
96+
return self.file.get_file_version_details(file_id, version_id)
97+
98+
def update_file_details(
99+
self, file_id: str, options: UpdateFileRequestOptions = None
100+
) -> FileResultWithResponseMetadata:
101+
"""Update file details by file id and options"""
53102
return self.file.update_file_details(file_id, options)
54103

55-
def delete_file(self, file_id: str = None) -> Dict[str, Any]:
56-
"""Delete file by file_id
57-
"""
104+
def add_tags(self, file_ids, tags) -> TagsResult:
105+
"""Add tags by file ids and tags"""
106+
return self.file.manage_tags(file_ids, tags, "addTags")
107+
108+
def remove_tags(self, file_ids, tags) -> TagsResult:
109+
"""Remove tags by file ids and tags"""
110+
return self.file.manage_tags(file_ids, tags, "removeTags")
111+
112+
def remove_ai_tags(self, file_ids, ai_tags) -> TagsResult:
113+
"""Remove AI tags by file ids and AI tags"""
114+
return self.file.remove_ai_tags(file_ids, ai_tags)
115+
116+
def delete_file(self, file_id: str = None) -> ResponseMetadataResult:
117+
"""Delete file by file_id"""
58118
return self.file.delete(file_id)
59119

60-
def bulk_delete(self, file_ids: list = None):
61-
"""Delete files in bulk by provided list of ids
62-
"""
120+
def delete_file_version(self, file_id, version_id) -> ResponseMetadataResult:
121+
"""Delete file version by provided file id and version id"""
122+
return self.file.delete_file_version(file_id, version_id)
123+
124+
def bulk_delete(self, file_ids: list = None) -> BulkDeleteFileResult:
125+
"""Delete files in bulk by provided list of file ids"""
63126
return self.file.batch_delete(file_ids)
64127

65-
def bulk_file_delete(self, file_ids: list = None):
66-
"""Delete files in bulk by provided list of ids
67-
"""
128+
def bulk_file_delete(self, file_ids: list = None) -> BulkDeleteFileResult:
129+
"""Delete files in bulk by provided list of file ids"""
68130
return self.file.batch_delete(file_ids)
69131

70-
def purge_cache(self, file_url: str = None) -> Dict[str, Any]:
71-
"""Purge Cache from server by file url
72-
"""
132+
def copy_file(
133+
self, options: CopyFileRequestOptions = None
134+
) -> ResponseMetadataResult:
135+
"""Copy file by provided sourceFilePath, destinationPath and includeFileVersions as an options"""
136+
return self.file.copy_file(options)
137+
138+
def move_file(
139+
self, options: MoveFileRequestOptions = None
140+
) -> ResponseMetadataResult:
141+
"""Move file by provided sourceFilePath and destinationPath as an options"""
142+
return self.file.move_file(options)
143+
144+
def rename_file(self, options: RenameFileRequestOptions = None) -> RenameFileResult:
145+
"""Rename file by provided filePath, newFileName and purgeCache as an options"""
146+
return self.file.rename_file(options)
147+
148+
def restore_file_version(
149+
self, file_id, version_id
150+
) -> FileResultWithResponseMetadata:
151+
"""Restore file version by provided file id and version id"""
152+
return self.file.restore_file_version(file_id, version_id)
153+
154+
def create_folder(
155+
self, options: CreateFolderRequestOptions = None
156+
) -> ResponseMetadataResult:
157+
"""Create folder by provided folderName and parentFolderPath as an options"""
158+
return self.file.create_folder(options)
159+
160+
def delete_folder(
161+
self, options: DeleteFolderRequestOptions = None
162+
) -> ResponseMetadataResult:
163+
"""Delete folder by provided folderPath as an options"""
164+
return self.file.delete_folder(options)
165+
166+
def copy_folder(self, options: CopyFolderRequestOptions = None) -> FolderResult:
167+
"""Copy folder by provided sourceFolderPath, destinationPath and includeFileVersions as an options"""
168+
return self.file.copy_folder(options)
169+
170+
def move_folder(self, options: MoveFolderRequestOptions = None) -> FolderResult:
171+
"""Move folder by provided sourceFolderPath and destinationPath as an options"""
172+
return self.file.move_folder(options)
173+
174+
def get_bulk_job_status(self, job_id) -> GetBulkJobStatusResult:
175+
"""Get bulk job status by provided only jobId"""
176+
return self.file.get_bulk_job_status(job_id)
177+
178+
def purge_cache(self, file_url: str = None) -> PurgeCacheResult:
179+
"""Purge Cache from server by file url"""
73180
return self.file.purge_cache(file_url)
74181

75-
def purge_file_cache(self, file_url: str = None) -> Dict[str, Any]:
76-
"""Purge Cache from server by file url
77-
"""
182+
def purge_file_cache(self, file_url: str = None) -> PurgeCacheResult:
183+
"""Purge Cache from server by file url"""
78184
return self.file.purge_cache(file_url)
79185

80-
def get_purge_cache_status(self, purge_cache_id: str = "") -> Dict[str, Any]:
81-
"""Get Purge Cache status by purge cache request_id
82-
"""
186+
def get_purge_cache_status(
187+
self, purge_cache_id: str = ""
188+
) -> PurgeCacheStatusResult:
189+
"""Get Purge Cache status by purge cache request_id"""
83190
return self.file.get_purge_cache_status(str(purge_cache_id))
84191

85-
def get_purge_file_cache_status(self, purge_cache_id: str = "") -> Dict[str, Any]:
86-
"""Get Purge Cache status by purge cache request_id
87-
"""
192+
def get_purge_file_cache_status(
193+
self, purge_cache_id: str = ""
194+
) -> PurgeCacheStatusResult:
195+
"""Get Purge Cache status by purge cache request_id"""
88196
return self.file.get_purge_cache_status(str(purge_cache_id))
89197

90-
def get_metadata(self, file_id: str = None) -> Dict[str, Any]:
91-
"""Get Meta Data of a file by file id
92-
"""
198+
def get_metadata(self, file_id: str = None) -> GetMetadataResult:
199+
"""Get Meta Data of a file by file id"""
93200
return self.file.get_metadata(str(file_id))
94201

95-
def get_file_metadata(self, file_id: str = None) -> Dict[str, Any]:
96-
"""Get Meta Data of a file by file id
97-
"""
202+
def get_file_metadata(self, file_id: str = None) -> GetMetadataResult:
203+
"""Get Meta Data of a file by file id"""
98204
return self.file.get_metadata(str(file_id))
99205

100-
def get_remote_url_metadata(self, remote_file_url: str = ""):
206+
def get_remote_url_metadata(self, remote_file_url: str = "") -> GetMetadataResult:
101207
return self.file.get_metadata_from_remote_url(remote_file_url)
102208

103-
def get_remote_file_url_metadata(self, remote_file_url: str = ""):
209+
def get_remote_file_url_metadata(
210+
self, remote_file_url: str = ""
211+
) -> GetMetadataResult:
212+
"""Get remote metadata by provided remote_file_url"""
104213
return self.file.get_metadata_from_remote_url(remote_file_url)
105214

215+
def create_custom_metadata_fields(
216+
self, options: CreateCustomMetadataFieldsRequestOptions = None
217+
) -> CustomMetadataFieldsResultWithResponseMetadata:
218+
"""creates custom metadata fields by passing name, label and schema as an options"""
219+
return self.file.create_custom_metadata_fields(options)
220+
221+
def get_custom_metadata_fields(
222+
self, include_deleted: bool = False
223+
) -> ListCustomMetadataFieldsResult:
224+
"""get custom metadata fields"""
225+
return self.file.get_custom_metadata_fields(include_deleted)
226+
227+
def update_custom_metadata_fields(
228+
self, field_id, options: UpdateCustomMetadataFieldsRequestOptions = None
229+
) -> CustomMetadataFieldsResultWithResponseMetadata:
230+
"""updates custom metadata fields by passing id of custom metadata field and params as an options"""
231+
return self.file.update_custom_metadata_fields(field_id, options)
232+
233+
def delete_custom_metadata_field(
234+
self, field_id: str = ""
235+
) -> ResponseMetadataResult:
236+
"""Deletes custom metadata fields by passing field_id"""
237+
return self.file.delete_custom_metadata_field(field_id)
238+
106239
def url(self, options: Dict[str, Any]) -> str:
107-
"""Get generated Url from options parameter
108-
"""
240+
"""Get generated Url from options parameter"""
109241
return self.url_obj.generate_url(options)
110242

111243
@staticmethod
112244
def phash_distance(first, second):
113-
"""Get hamming distance between two phash(to check similarity)
114-
"""
245+
"""Get hamming distance between two phash(to check similarity)"""
115246
if not (first and second):
116247
raise TypeError(ERRORS.MISSING_PHASH_VALUE.value)
117248
return hamming_distance(first, second)
118249

119250
def get_authentication_parameters(self, token="", expire=0):
120-
"""Get Authentication parameters
121-
"""
251+
"""Get Authentication parameters"""
122252
return get_authenticated_params(token, expire, self.ik_request.private_key)

imagekitio/constants/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
from .errors import ERRORS

imagekitio/constants/defaults.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ class Default(enum.Enum):
99
QUERY_TRANSFORMATION_POSITION,
1010
]
1111
DEFAULT_TIMESTAMP = 9999999999
12-
SDK_VERSION_PARAMETER = "ik-sdk-version"
13-
SDK_VERSION = "python-2.2.8"
12+
SDK_VERSION = "python-3.0.0"
1413
TRANSFORMATION_PARAMETER = "tr"
1514
CHAIN_TRANSFORM_DELIMITER = ":"
1615
TRANSFORM_DELIMITER = ","

imagekitio/constants/errors.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class ERRORS(enum.Enum):
2828
}
2929
FILE_ID_MISSING = {
3030
"message": "Missing File ID parameter for this request",
31-
help: "",
31+
"help": "",
3232
}
3333
UPDATE_DATA_MISSING = {
3434
"message": "Missing file update data for this request",
@@ -53,13 +53,12 @@ class ERRORS(enum.Enum):
5353
MISSING_UPLOAD_DATA = {"message": "Missing data for upload", help: ""}
5454
MISSING_UPLOAD_FILE_PARAMETER = {
5555
"message": "Missing file parameter for upload",
56-
help: "",
56+
"help": "",
5757
}
5858
MISSING_UPLOAD_FILENAME_PARAMETER = {
5959
"message": "Missing fileName parameter for upload",
60-
help: "",
60+
"help": "",
6161
}
62-
6362
INVALID_PHASH_VALUE = (
6463
{
6564
"message": "Invalid pHash value",
@@ -74,3 +73,11 @@ class ERRORS(enum.Enum):
7473
"message": "Unequal pHash string length",
7574
help: "For distance calculation, the two pHash strings must have equal length",
7675
}
76+
VERSION_ID_MISSING = {
77+
"message": "Missing Version ID parameter for this request",
78+
"help": "",
79+
}
80+
MISSING_CUSTOM_METADATA_FIELD_ID = {
81+
"message": "Missing field_id for update_custom_metadata_fields",
82+
"help": "",
83+
}

0 commit comments

Comments
 (0)