Skip to content

Commit 088d227

Browse files
committed
new media APIs
1 parent 5e9c2ca commit 088d227

File tree

7 files changed

+268
-4
lines changed

7 files changed

+268
-4
lines changed

index.ts

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ import {
2626
CreateFolderOptions,
2727
CopyFolderOptions,
2828
MoveFolderOptions,
29+
FileVersionDetailsOptions,
30+
DeleteFileVersionOptions,
31+
RestoreFileVersionOptions,
2932
} from "./libs/interfaces";
3033
import { IKCallback } from "./libs/interfaces/IKCallback";
3134
import manage from "./libs/manage";
@@ -147,6 +150,32 @@ class ImageKit {
147150
return promisify<FileDetailsResponse>(this, manage.getFileDetails)(fileId, this.options, callback);
148151
}
149152

153+
/**
154+
* Get all versions of an assset API
155+
*
156+
* @see {@link https://docs.imagekit.io/api-reference/media-api/get-file-versions}
157+
*
158+
* @param fileId
159+
*/
160+
getFileVersions(fileId: string): Promise<FileDetailsResponse>;
161+
getFileVersions(fileId: string, callback: IKCallback<FileDetailsResponse>): void;
162+
getFileVersions(fileId: string, callback?: IKCallback<FileDetailsResponse>): void | Promise<FileDetailsResponse> {
163+
return promisify<FileDetailsResponse>(this, manage.getFileVersions)(fileId, this.options, callback);
164+
}
165+
166+
/**
167+
* Get file version details API
168+
*
169+
* @see {@link https://docs.imagekit.io/api-reference/media-api/get-file-version-details}
170+
*
171+
* @param fileVersionDetailsOptions
172+
*/
173+
getFileVersionDetails(fileVersionDetailsOptions: FileVersionDetailsOptions): Promise<FileDetailsResponse>;
174+
getFileVersionDetails(fileVersionDetailsOptions: FileVersionDetailsOptions, callback: IKCallback<FileDetailsResponse>): void;
175+
getFileVersionDetails(fileVersionDetailsOptions: FileVersionDetailsOptions, callback?: IKCallback<FileDetailsResponse>): void | Promise<FileDetailsResponse> {
176+
return promisify<FileDetailsResponse>(this, manage.getFileVersionDetails)(fileVersionDetailsOptions, this.options, callback);
177+
}
178+
150179
/**
151180
* Get image exif, pHash and other metadata for uploaded files in ImageKit.io media library using this API.
152181
*
@@ -206,6 +235,20 @@ class ImageKit {
206235
return promisify(this, manage.bulkRemoveTags)(fileIds, tags, this.options, callback);
207236
}
208237

238+
/**
239+
* Remove AITags from multiple files in a single request.
240+
*
241+
* @see {@link https://docs.imagekit.io/api-reference/media-api/remove-aitags-bulk}
242+
*
243+
* @param fileIds
244+
* @param tags
245+
*/
246+
bulkRemoveAITags(fileIds: string[], tags: string[]): void;
247+
bulkRemoveAITags(fileIds: string[], tags: string[], callback: IKCallback<void>): void;
248+
bulkRemoveAITags(fileIds: string[], tags: string[], callback?: IKCallback<void>): void | Promise<void> {
249+
return promisify(this, manage.bulkRemoveAITags)(fileIds, tags, this.options, callback);
250+
}
251+
209252
/**
210253
* You can programmatically delete uploaded files in media library using delete file API.
211254
*
@@ -219,6 +262,32 @@ class ImageKit {
219262
return promisify(this, manage.deleteFile)(fileId, this.options, callback);
220263
}
221264

265+
/**
266+
* Delete any non-current version of a file.
267+
*
268+
* @see {@link https://docs.imagekit.io/api-reference/media-api/delete-file-version}
269+
*
270+
* @param deleteFileVersionOptions
271+
*/
272+
deleteFileVersion(deleteFileVersionOptions: DeleteFileVersionOptions): Promise<void>;
273+
deleteFileVersion(deleteFileVersionOptions: DeleteFileVersionOptions, callback: IKCallback<void>): void;
274+
deleteFileVersion(deleteFileVersionOptions: DeleteFileVersionOptions, callback?: IKCallback<void>): void | Promise<void> {
275+
return promisify(this, manage.deleteFileVersion)(deleteFileVersionOptions, this.options, callback);
276+
}
277+
278+
/**
279+
* Restore file version to a different version of a file.
280+
*
281+
* @see {@link https://docs.imagekit.io/api-reference/media-api/restore-file-version}
282+
*
283+
* @param restoreFileVersionOptions
284+
*/
285+
restoreFileVersion(restoreFileVersionOptions: RestoreFileVersionOptions): Promise<FileDetailsResponse>;
286+
restoreFileVersion(restoreFileVersionOptions: RestoreFileVersionOptions, callback: IKCallback<FileDetailsResponse>): void;
287+
restoreFileVersion(restoreFileVersionOptions: RestoreFileVersionOptions, callback?: IKCallback<FileDetailsResponse>): void | Promise<FileDetailsResponse> {
288+
return promisify<FileDetailsResponse>(this, manage.restoreFileVersion)(restoreFileVersionOptions, this.options, callback);
289+
}
290+
222291
/**
223292
* This will purge CDN and ImageKit.io internal cache.
224293
*

libs/constants/errorMessages.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export default {
77
"CACHE_PURGE_URL_MISSING": { message: "Missing URL parameter for this request", help: "" },
88
"CACHE_PURGE_STATUS_ID_MISSING": { message: "Missing Request ID parameter for this request", help: "" },
99
"FILE_ID_MISSING": { message: "Missing File ID parameter for this request", help: "" },
10+
"FILE_VERSION_ID_MISSING": { message: "Missing File version ID parameter for this request", help: "" },
1011
"FILE_ID_OR_URL_MISSING": { message: "Pass either File ID or remote URL of the image as first parameter", help: "" },
1112
"UPDATE_DATA_MISSING": { message: "Missing file update data for this request", help: "" },
1213
"UPDATE_DATA_TAGS_INVALID": { message: "Invalid tags parameter for this request", help: "tags should be passed as null or an array like ['tag1', 'tag2']" },
@@ -29,5 +30,6 @@ export default {
2930
"UNEQUAL_STRING_LENGTH": { message: "Unequal pHash string length", help: "For distance calucation, the two pHash strings must have equal length" },
3031
//bulk delete errors
3132
"INVALID_FILEIDS_VALUE": { message: "Invalid value for fileIds", help: "fileIds should be an array of fileId of the files. The array should have atleast one fileId." },
32-
"BULK_ADD_TAGS_INVALID": { message: "Invalid value for tags", help: "tags should be a non empty array of string like ['tag1', 'tag2']." }
33+
"BULK_ADD_TAGS_INVALID": { message: "Invalid value for tags", help: "tags should be a non empty array of string like ['tag1', 'tag2']." },
34+
"BULK_AI_TAGS_INVALID": { message: "Invalid value for AITags", help: "AITags should be a non empty array of string like ['tag1', 'tag2']." }
3335
};

libs/interfaces/FileDetails.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export interface FileDetailsResponse {
6161
/**
6262
* Array of tags associated with the image. If no tags are set, it will be null.
6363
*/
64-
tags: string[] | null;
64+
tags?: string[] | null;
6565
/**
6666
* Is the file marked as private. It can be either true or false.
6767
*/
@@ -126,5 +126,21 @@ export interface FileDetailsResponse {
126126
/*
127127
* MIME Type of the file. For example - image/jpeg
128128
*/
129-
mime: string;
129+
mime?: string;
130+
/**
131+
* An object containing the file or file version's id (versionId) and name.
132+
*/
133+
versionInfo?: object;
130134
}
135+
136+
137+
export interface FileVersionDetailsOptions {
138+
/**
139+
* The unique fileId of the uploaded file. fileId is returned in list files API and upload API.
140+
*/
141+
fileId: string;
142+
/**
143+
* The unique versionId of the uploaded file's version. This is returned in list files API and upload API as id within the versionInfo parameter.
144+
*/
145+
versionId: string;
146+
}

libs/interfaces/FileVersion.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
export interface DeleteFileVersionOptions {
2+
/**
3+
* The unique fileId of the uploaded file. fileId is returned in list files API and upload API.
4+
*/
5+
fileId: string;
6+
/**
7+
* The unique versionId of the uploaded file's version. This is returned in list files API and upload API as id within the versionInfo parameter.
8+
*/
9+
versionId: string;
10+
}
11+
12+
export interface RestoreFileVersionOptions {
13+
/**
14+
* The unique fileId of the uploaded file. fileId is returned in list files API and upload API.
15+
*/
16+
fileId: string;
17+
/**
18+
* The unique versionId of the uploaded file's version. This is returned in list files API and upload API as id within the versionInfo parameter.
19+
*/
20+
versionId: string;
21+
}

libs/interfaces/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ import { ListFileOptions, ListFileResponse } from "./ListFile";
88
import { CopyFileOptions } from "./CopyFile";
99
import { MoveFileOptions } from "./MoveFile";
1010
import { CreateFolderOptions } from "./CreateFolder";
11-
import { FileDetailsOptions, FileDetailsResponse } from "./FileDetails";
11+
import { FileDetailsOptions, FileVersionDetailsOptions, FileDetailsResponse } from "./FileDetails";
1212
import { FileMetadataResponse } from "./FileMetadata";
1313
import { PurgeCacheResponse, PurgeCacheStatusResponse } from "./PurgeCache";
1414
import { BulkDeleteFilesResponse, BulkDeleteFilesError } from "./BulkDeleteFiles";
1515
import { CopyFolderOptions, CopyFolderResponse, CopyFolderError } from "./CopyFolder";
1616
import { MoveFolderOptions, MoveFolderResponse, MoveFolderError } from "./MoveFolder";
17+
import { DeleteFileVersionOptions, RestoreFileVersionOptions } from "./FileVersion"
1718

1819
type FinalUrlOptions = ImageKitOptions & UrlOptions; // actual options used to construct url
1920

@@ -29,6 +30,7 @@ export {
2930
ListFileOptions,
3031
ListFileResponse,
3132
FileDetailsOptions,
33+
FileVersionDetailsOptions,
3234
FileDetailsResponse,
3335
FileMetadataResponse,
3436
PurgeCacheResponse,
@@ -44,5 +46,7 @@ export {
4446
CreateFolderOptions,
4547
CopyFolderOptions,
4648
MoveFolderOptions,
49+
DeleteFileVersionOptions,
50+
RestoreFileVersionOptions,
4751
};
4852
export { IKCallback } from "./IKCallback";

0 commit comments

Comments
 (0)