Skip to content
Merged
Show file tree
Hide file tree
Changes from 100 commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
5a1a183
added upload file API with few not exists params and added custom exc…
KhushbooMer Jul 12, 2022
6b4cc8e
added test regarding fixes and extensions and customMetadata regardin…
KhushbooMer Jul 13, 2022
05a512e
added test fix
KhushbooMer Jul 14, 2022
9b49278
added more APIs changes
KhushbooMer Jul 14, 2022
4773db8
added test regarding few changes to mock response
KhushbooMer Jul 15, 2022
ac64b49
added few readme file changes and file result for static object
KhushbooMer Jul 16, 2022
22ba519
added response metadata with response
KhushbooMer Jul 16, 2022
5d72bac
added changes regarding response_metadata with property
KhushbooMer Jul 18, 2022
2a46300
added few more changes for other APIs regarding static response
KhushbooMer Jul 18, 2022
473425e
added more fixes for static response object
KhushbooMer Jul 19, 2022
4bdac86
changes to remove ik-sdk-version param from getUrl()
KhushbooMer Jul 19, 2022
3550da7
added fixes for test to mock API with assert request body, url and re…
KhushbooMer Jul 20, 2022
18b9517
added more fixes to assert request with adding multipart form data
KhushbooMer Jul 20, 2022
9a64d71
added test cases for upload, get url, list and search files, get file…
KhushbooMer Jul 21, 2022
cb5e97b
added test for get file version details
KhushbooMer Jul 22, 2022
4ea0074
added more APIs
KhushbooMer Jul 22, 2022
02737a8
added more APIs implementation
KhushbooMer Jul 25, 2022
435f038
adde more APIs
KhushbooMer Jul 26, 2022
36350fe
added changes for sample one code
KhushbooMer Jul 26, 2022
ecda513
added readme files changes for all APIs and minor change on create cu…
KhushbooMer Jul 27, 2022
8656ff3
added minor changes in doc and code
KhushbooMer Aug 2, 2022
295cf27
added changes for readme file
KhushbooMer Aug 3, 2022
34da85b
added minor changes
KhushbooMer Aug 3, 2022
4df2799
removed sample project folder
KhushbooMer Aug 3, 2022
29574cf
added minor changes
KhushbooMer Aug 3, 2022
76e8cdc
README comments fixes
amanforindia Aug 10, 2022
69131df
added fixes for imports and tests regarding changes
KhushbooMer Aug 22, 2022
17d92b4
Merge pull request #1 from KhushbooMer/api-implementation
kishanio Aug 22, 2022
dab2c3f
added fixes for tests
KhushbooMer Aug 22, 2022
23efd09
Merge pull request #2 from KhushbooMer/api-implementation
kishanio Aug 22, 2022
c00ccf2
added fixes for imports
KhushbooMer Aug 22, 2022
0e403e1
Merge pull request #3 from KhushbooMer/api-implementation
kishanio Aug 22, 2022
eccada2
added changes for response to get fields as autocomplete
KhushbooMer Aug 23, 2022
55d6c68
Merge pull request #4 from KhushbooMer/api-implementation
kishanio Aug 29, 2022
eec677e
Update README.md
kishanio Aug 29, 2022
8addfdc
Merge pull request #5 from amanforindia/update-readme-api-implementation
kishanio Aug 29, 2022
d3f2bdd
added fixes for readme file
KhushbooMer Aug 29, 2022
b9cf5a1
sync with base
KhushbooMer Aug 29, 2022
aea5d18
added custom request class for options of all APIs
KhushbooMer Aug 30, 2022
a901369
Merge pull request #6 from KhushbooMer/api-implementation
kishanio Aug 30, 2022
704c1b7
fix testing
kishanio Aug 30, 2022
07ac47c
Update README.md
kishanio Aug 30, 2022
6cd4c7f
added readme file changes
KhushbooMer Sep 1, 2022
41994f9
added fixes for options param for needed all APIs
KhushbooMer Sep 2, 2022
6b64534
resolved comments
KhushbooMer Sep 3, 2022
3bdb521
minor changes
KhushbooMer Sep 3, 2022
ce69f87
added fix for list API
KhushbooMer Sep 3, 2022
7a273d6
Fixed readme & parameters naming issues
kishanio Sep 8, 2022
435a708
added changes of relative paths and added init file
KhushbooMer Sep 8, 2022
1293ad6
fix certain paths & formatting issues
kishanio Sep 8, 2022
f826625
Merge pull request #8 from KhushbooMer/comment-fixes
kishanio Sep 8, 2022
da07ddb
Merge branch 'api-implementation' of github.com:amanforindia/imagekit…
kishanio Sep 8, 2022
ae3ed75
fix formatting issues
kishanio Sep 8, 2022
f69c21b
fixed lgtm errors
kishanio Sep 8, 2022
82ab982
fix various response type
kishanio Sep 8, 2022
0a958ee
fix raw param
kishanio Sep 8, 2022
a8c7048
Merge branch 'api-implementation' into api-implementation
kishanio Sep 9, 2022
3d7e203
Merge pull request #7 from KhushbooMer/api-implementation
kishanio Sep 9, 2022
6a11c49
changed body as string and removed json dumps in tests and resolved c…
KhushbooMer Sep 9, 2022
4fc5dfb
syned with base branch
KhushbooMer Sep 9, 2022
fd9df82
Merge pull request #9 from KhushbooMer/comment-fixes-09
kishanio Sep 9, 2022
ca7174a
fix test cases
kishanio Sep 9, 2022
e72e11f
fix tox requirements
kishanio Sep 9, 2022
6682b9d
added test regarding fixes
KhushbooMer Sep 9, 2022
aed9a27
added fixes for tests
KhushbooMer Sep 10, 2022
0ffa1b4
removed extra print statement
KhushbooMer Sep 10, 2022
1dc351f
more changes for tests
KhushbooMer Sep 10, 2022
e5df390
Merge pull request #10 from KhushbooMer/test-fixes
kishanio Sep 10, 2022
21933f6
Revert "Test fixes"
kishanio Sep 10, 2022
0d685f7
Merge pull request #11 from amanforindia/revert-10-test-fixes
amanforindia Sep 10, 2022
b6eb757
Revert "Revert "Test fixes""
kishanio Sep 10, 2022
962aaf9
Merge pull request #12 from amanforindia/revert-11-revert-10-test-fixes
kishanio Sep 10, 2022
bd9dac3
readme updated
KhushbooMer Sep 10, 2022
e4ab6c2
Merge pull request #13 from KhushbooMer/readme-update
kishanio Sep 10, 2022
cece192
update readme.
kishanio Sep 10, 2022
7896134
Fixed unmerged Readme.
kishanio Sep 10, 2022
9718782
Updated Readme with Test Information
kishanio Sep 10, 2022
5dc060e
Fixed sample writeup
kishanio Sep 10, 2022
a0a0915
tests - fix formatting
kishanio Sep 10, 2022
7f3b980
tests - fix formatting
kishanio Sep 10, 2022
316a806
added changes for a_i to ai
KhushbooMer Sep 12, 2022
3785bb9
added fix with condition
KhushbooMer Sep 12, 2022
d005d6c
removed log
KhushbooMer Sep 12, 2022
9078d11
added test for includeDeleted true
KhushbooMer Sep 12, 2022
9be3656
added test without include_file_versions
KhushbooMer Sep 12, 2022
232b3fc
added tests for purge_cache false
KhushbooMer Sep 12, 2022
d1b1f83
added test for include_file_versions with false and not getting pass …
KhushbooMer Sep 12, 2022
880d83f
added changes for tags to pass as an string or array and added test f…
KhushbooMer Sep 12, 2022
e051f96
added fix for test
KhushbooMer Sep 12, 2022
1690197
added fixes for multipart body regarding comment
KhushbooMer Sep 13, 2022
68b1689
added test for url upload
KhushbooMer Sep 13, 2022
5a08849
replace make_string_to_single_line with json dumps and loads
KhushbooMer Sep 13, 2022
a2991ff
Merge pull request #14 from KhushbooMer/fix-ai-comment
kishanio Sep 13, 2022
18d74b6
added fixes for tests
KhushbooMer Sep 13, 2022
604de8f
Merge pull request #15 from KhushbooMer/fixes
kishanio Sep 13, 2022
483404f
fix formatting
kishanio Sep 13, 2022
17a7846
added fixes for pending comments
KhushbooMer Sep 14, 2022
cbeb0e6
Merge pull request #16 from KhushbooMer/pending-comment-fix
kishanio Sep 14, 2022
8edb05d
Fixed readability of binary file upload.
kishanio Sep 15, 2022
87e16a8
reverted test
kishanio Sep 15, 2022
7d49b45
added init file for constants and utils
KhushbooMer Sep 29, 2022
ba38bb8
Merge pull request #17 from KhushbooMer/resolved-comment
amanforindia Sep 29, 2022
e16284e
added supported version of python for test environment
KhushbooMer Sep 30, 2022
7bf2c5a
added fixes for versiong
KhushbooMer Sep 30, 2022
013b26d
Merge pull request #18 from KhushbooMer/tox-fix
kishanio Sep 30, 2022
fde0fd4
updated github workflows
kishanio Sep 30, 2022
6730a59
added default value for all response custom objects
KhushbooMer Sep 30, 2022
0904e9d
Merge pull request #19 from KhushbooMer/default-value-fix
kishanio Sep 30, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ parts/
sdist/
var/
wheels/
sample/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
Expand Down
1,334 changes: 1,105 additions & 229 deletions README.md

Large diffs are not rendered by default.

234 changes: 182 additions & 52 deletions imagekitio/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,42 @@

from .constants.errors import ERRORS
from .file import File
from .models.CopyFileRequestOptions import CopyFileRequestOptions
from .models.CopyFolderRequestOptions import CopyFolderRequestOptions
from .models.CreateCustomMetadataFieldsRequestOptions import (
CreateCustomMetadataFieldsRequestOptions,
)
from .models.CreateFolderRequestOptions import CreateFolderRequestOptions
from .models.DeleteFolderRequestOptions import DeleteFolderRequestOptions
from .models.ListAndSearchFileRequestOptions import ListAndSearchFileRequestOptions
from .models.MoveFileRequestOptions import MoveFileRequestOptions
from .models.MoveFolderRequestOptions import MoveFolderRequestOptions
from .models.RenameFileRequestOptions import RenameFileRequestOptions
from .models.UpdateCustomMetadataFieldsRequestOptions import (
UpdateCustomMetadataFieldsRequestOptions,
)
from .models.UpdateFileRequestOptions import UpdateFileRequestOptions
from .models.UploadFileRequestOptions import UploadFileRequestOptions
from .models.results.BulkDeleteFileResult import BulkDeleteFileResult
from .models.results.CustomMetadataFieldsResultWithResponseMetadata import (
CustomMetadataFieldsResultWithResponseMetadata,
)
from .models.results.FileResultWithResponseMetadata import (
FileResultWithResponseMetadata,
)
from .models.results.FolderResult import FolderResult
from .models.results.GetBulkJobStatusResult import GetBulkJobStatusResult
from .models.results.GetMetadataResult import GetMetadataResult
from .models.results.ListCustomMetadataFieldsResult import (
ListCustomMetadataFieldsResult,
)
from .models.results.ListFileResult import ListFileResult
from .models.results.PurgeCacheResult import PurgeCacheResult
from .models.results.PurgeCacheStatusResult import PurgeCacheStatusResult
from .models.results.RenameFileResult import RenameFileResult
from .models.results.ResponseMetadataResult import ResponseMetadataResult
from .models.results.TagsResult import TagsResult
from .models.results.UploadFileResult import UploadFileResult
from .resource import ImageKitRequest
from .url import Url
from .utils.calculation import get_authenticated_params, hamming_distance
Expand All @@ -27,96 +63,190 @@ def __init__(
self.file = File(self.ik_request)
self.url_obj = Url(self.ik_request)

def upload(self, file=None, file_name=None, options=None) -> Dict[str, Any]:
"""Provides upload functionality
"""
def upload(self, file=None, file_name=None, options=None) -> UploadFileResult:
"""Provides upload functionality"""
return self.file.upload(file, file_name, options)

def upload_file(self, file=None, file_name=None, options=None) -> Dict[str, Any]:
"""Provides upload functionality
"""
return self.file.upload(file, file_name, options)
def upload_file(
self, file=None, file_name=None, options: UploadFileRequestOptions = None
) -> UploadFileResult:
"""Provides upload functionality"""
return self.file.upload(
file, file_name, options if options is not None else None
)

def list_files(self, options: Dict) -> Dict:
"""Get list(filtered if given param) of images of client
"""
def list_files(
self, options: ListAndSearchFileRequestOptions = None
) -> ListFileResult:
"""Get list(filtered if given param) of images of client"""
return self.file.list(options)

def get_file_details(self, file_identifier: str = None) -> Dict:
"""Get file_detail by file_id or file_url
"""
return self.file.details(file_identifier)
def get_file_details(self, file_id: str = None) -> FileResultWithResponseMetadata:
"""Get file_detail by file_id or file_url"""
return self.file.details(file_id)

def get_file_versions(self, file_id: str = None) -> ListFileResult:
"""Get file_version by file_id or file_url"""
return self.file.get_file_versions(file_id)

def update_file_details(self, file_id: str, options: dict = None) -> Dict:
"""Update file detail by file id and options
"""
def get_file_version_details(
self, file_id: str = None, version_id: str = None
) -> FileResultWithResponseMetadata:
"""Get file_version details by file_id and version_id"""
return self.file.get_file_version_details(file_id, version_id)

def update_file_details(
self, file_id: str, options: UpdateFileRequestOptions = None
) -> FileResultWithResponseMetadata:
"""Update file details by file id and options"""
return self.file.update_file_details(file_id, options)

def delete_file(self, file_id: str = None) -> Dict[str, Any]:
"""Delete file by file_id
"""
def add_tags(self, file_ids, tags) -> TagsResult:
"""Add tags by file ids and tags"""
return self.file.manage_tags(file_ids, tags, "addTags")

def remove_tags(self, file_ids, tags) -> TagsResult:
"""Remove tags by file ids and tags"""
return self.file.manage_tags(file_ids, tags, "removeTags")

def remove_ai_tags(self, file_ids, ai_tags) -> TagsResult:
"""Remove AI tags by file ids and AI tags"""
return self.file.remove_ai_tags(file_ids, ai_tags)

def delete_file(self, file_id: str = None) -> ResponseMetadataResult:
"""Delete file by file_id"""
return self.file.delete(file_id)

def bulk_delete(self, file_ids: list = None):
"""Delete files in bulk by provided list of ids
"""
def delete_file_version(self, file_id, version_id) -> ResponseMetadataResult:
"""Delete file version by provided file id and version id"""
return self.file.delete_file_version(file_id, version_id)

def bulk_delete(self, file_ids: list = None) -> BulkDeleteFileResult:
"""Delete files in bulk by provided list of file ids"""
return self.file.batch_delete(file_ids)

def bulk_file_delete(self, file_ids: list = None):
"""Delete files in bulk by provided list of ids
"""
def bulk_file_delete(self, file_ids: list = None) -> BulkDeleteFileResult:
"""Delete files in bulk by provided list of file ids"""
return self.file.batch_delete(file_ids)

def purge_cache(self, file_url: str = None) -> Dict[str, Any]:
"""Purge Cache from server by file url
"""
def copy_file(
self, options: CopyFileRequestOptions = None
) -> ResponseMetadataResult:
"""Copy file by provided sourceFilePath, destinationPath and includeFileVersions as an options"""
return self.file.copy_file(options)

def move_file(
self, options: MoveFileRequestOptions = None
) -> ResponseMetadataResult:
"""Move file by provided sourceFilePath and destinationPath as an options"""
return self.file.move_file(options)

def rename_file(self, options: RenameFileRequestOptions = None) -> RenameFileResult:
"""Rename file by provided filePath, newFileName and purgeCache as an options"""
return self.file.rename_file(options)

def restore_file_version(
self, file_id, version_id
) -> FileResultWithResponseMetadata:
"""Restore file version by provided file id and version id"""
return self.file.restore_file_version(file_id, version_id)

def create_folder(
self, options: CreateFolderRequestOptions = None
) -> ResponseMetadataResult:
"""Create folder by provided folderName and parentFolderPath as an options"""
return self.file.create_folder(options)

def delete_folder(
self, options: DeleteFolderRequestOptions = None
) -> ResponseMetadataResult:
"""Delete folder by provided folderPath as an options"""
return self.file.delete_folder(options)

def copy_folder(self, options: CopyFolderRequestOptions = None) -> FolderResult:
"""Copy folder by provided sourceFolderPath, destinationPath and includeFileVersions as an options"""
return self.file.copy_folder(options)

def move_folder(self, options: MoveFolderRequestOptions = None) -> FolderResult:
"""Move folder by provided sourceFolderPath and destinationPath as an options"""
return self.file.move_folder(options)

def get_bulk_job_status(self, job_id) -> GetBulkJobStatusResult:
"""Get bulk job status by provided only jobId"""
return self.file.get_bulk_job_status(job_id)

def purge_cache(self, file_url: str = None) -> PurgeCacheResult:
"""Purge Cache from server by file url"""
return self.file.purge_cache(file_url)

def purge_file_cache(self, file_url: str = None) -> Dict[str, Any]:
"""Purge Cache from server by file url
"""
def purge_file_cache(self, file_url: str = None) -> PurgeCacheResult:
"""Purge Cache from server by file url"""
return self.file.purge_cache(file_url)

def get_purge_cache_status(self, purge_cache_id: str = "") -> Dict[str, Any]:
"""Get Purge Cache status by purge cache request_id
"""
def get_purge_cache_status(
self, purge_cache_id: str = ""
) -> PurgeCacheStatusResult:
"""Get Purge Cache status by purge cache request_id"""
return self.file.get_purge_cache_status(str(purge_cache_id))

def get_purge_file_cache_status(self, purge_cache_id: str = "") -> Dict[str, Any]:
"""Get Purge Cache status by purge cache request_id
"""
def get_purge_file_cache_status(
self, purge_cache_id: str = ""
) -> PurgeCacheStatusResult:
"""Get Purge Cache status by purge cache request_id"""
return self.file.get_purge_cache_status(str(purge_cache_id))

def get_metadata(self, file_id: str = None) -> Dict[str, Any]:
"""Get Meta Data of a file by file id
"""
def get_metadata(self, file_id: str = None) -> GetMetadataResult:
"""Get Meta Data of a file by file id"""
return self.file.get_metadata(str(file_id))

def get_file_metadata(self, file_id: str = None) -> Dict[str, Any]:
"""Get Meta Data of a file by file id
"""
def get_file_metadata(self, file_id: str = None) -> GetMetadataResult:
"""Get Meta Data of a file by file id"""
return self.file.get_metadata(str(file_id))

def get_remote_url_metadata(self, remote_file_url: str = ""):
def get_remote_url_metadata(self, remote_file_url: str = "") -> GetMetadataResult:
return self.file.get_metadata_from_remote_url(remote_file_url)

def get_remote_file_url_metadata(self, remote_file_url: str = ""):
def get_remote_file_url_metadata(
self, remote_file_url: str = ""
) -> GetMetadataResult:
"""Get remote metadata by provided remote_file_url"""
return self.file.get_metadata_from_remote_url(remote_file_url)

def create_custom_metadata_fields(
self, options: CreateCustomMetadataFieldsRequestOptions = None
) -> CustomMetadataFieldsResultWithResponseMetadata:
"""creates custom metadata fields by passing name, label and schema as an options"""
return self.file.create_custom_metadata_fields(options)

def get_custom_metadata_fields(
self, include_deleted: bool = False
) -> ListCustomMetadataFieldsResult:
"""get custom metadata fields"""
return self.file.get_custom_metadata_fields(include_deleted)

def update_custom_metadata_fields(
self, field_id, options: UpdateCustomMetadataFieldsRequestOptions = None
) -> CustomMetadataFieldsResultWithResponseMetadata:
"""updates custom metadata fields by passing id of custom metadata field and params as an options"""
return self.file.update_custom_metadata_fields(field_id, options)

def delete_custom_metadata_field(
self, field_id: str = ""
) -> ResponseMetadataResult:
"""Deletes custom metadata fields by passing field_id"""
return self.file.delete_custom_metadata_field(field_id)

def url(self, options: Dict[str, Any]) -> str:
"""Get generated Url from options parameter
"""
"""Get generated Url from options parameter"""
return self.url_obj.generate_url(options)

@staticmethod
def phash_distance(first, second):
"""Get hamming distance between two phash(to check similarity)
"""
"""Get hamming distance between two phash(to check similarity)"""
if not (first and second):
raise TypeError(ERRORS.MISSING_PHASH_VALUE.value)
return hamming_distance(first, second)

def get_authentication_parameters(self, token="", expire=0):
"""Get Authentication parameters
"""
"""Get Authentication parameters"""
return get_authenticated_params(token, expire, self.ik_request.private_key)
1 change: 0 additions & 1 deletion imagekitio/constants/__init__.py

This file was deleted.

3 changes: 1 addition & 2 deletions imagekitio/constants/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ class Default(enum.Enum):
QUERY_TRANSFORMATION_POSITION,
]
DEFAULT_TIMESTAMP = 9999999999
SDK_VERSION_PARAMETER = "ik-sdk-version"
SDK_VERSION = "python-2.2.8"
SDK_VERSION = "python-3.0.0"
TRANSFORMATION_PARAMETER = "tr"
CHAIN_TRANSFORM_DELIMITER = ":"
TRANSFORM_DELIMITER = ","
Expand Down
15 changes: 11 additions & 4 deletions imagekitio/constants/errors.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class ERRORS(enum.Enum):
}
FILE_ID_MISSING = {
"message": "Missing File ID parameter for this request",
help: "",
"help": "",
}
UPDATE_DATA_MISSING = {
"message": "Missing file update data for this request",
Expand All @@ -53,13 +53,12 @@ class ERRORS(enum.Enum):
MISSING_UPLOAD_DATA = {"message": "Missing data for upload", help: ""}
MISSING_UPLOAD_FILE_PARAMETER = {
"message": "Missing file parameter for upload",
help: "",
"help": "",
}
MISSING_UPLOAD_FILENAME_PARAMETER = {
"message": "Missing fileName parameter for upload",
help: "",
"help": "",
}

INVALID_PHASH_VALUE = (
{
"message": "Invalid pHash value",
Expand All @@ -74,3 +73,11 @@ class ERRORS(enum.Enum):
"message": "Unequal pHash string length",
help: "For distance calculation, the two pHash strings must have equal length",
}
VERSION_ID_MISSING = {
"message": "Missing Version ID parameter for this request",
"help": "",
}
MISSING_CUSTOM_METADATA_FIELD_ID = {
"message": "Missing field_id for update_custom_metadata_fields",
"help": "",
}
17 changes: 13 additions & 4 deletions imagekitio/constants/files.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
VALID_FILE_OPTIONS = [
"type",
"sort",
"path",
"searchQuery",
"fileType",
"tags",
"includeFolder",
"name",
"limit",
"skip",
"tags",
"includeFolder",
]

VALID_FILE_DETAIL_OPTIONS = ["fileID"]
Expand All @@ -19,5 +21,12 @@
"is_private_file",
"custom_coordinates",
"response_fields",
"metadata",
"extensions",
"webhook_url",
"overwrite_file",
"overwrite_ai_tags",
"overwrite_tags",
"overwrite_custom_metadata",
"custom_metadata",
"embedded_metadata",
]
Loading