Skip to content

Commit 27380e6

Browse files
committed
Initial commit of v2 SDK
1 parent b54b8f9 commit 27380e6

File tree

18 files changed

+1084
-3
lines changed

18 files changed

+1084
-3
lines changed

README.md

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1-
# NodeJS SDK for ImageKit
1+
# NodeJS SDK v2.x for ImageKit
2+
3+
New version of the NodeJS SDK for [ImageKit.io](https://imagekit.io) that implements the new APIs and interface for performing different file operations.
4+
5+
ImageKit is a complete image optimization and transformation solution that comes with an [image CDN](https://imagekit.io/features/imagekit-infrastructure) and media storage. It can be integrated with your existing infrastructure - storages like AWS S3, web servers, your CDN and custom domain names, allowing you to deliver optimized images in minutes with minimal code changes.
6+
7+
## Installation
8+
9+
`npm install imagekit`
10+
11+
## Initialization
12+
13+
## Usage
14+
15+
### Create URL
16+
17+
### Create Signed URL
18+
19+
### File Upload
20+
21+
### File Management
222

3-
New version 2.x of the NodeJS SDK for [ImageKit.io](https://imagekit.io) that implements the new APIs and interface for performing different operations.

constants/errorMessages.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
module.exports = {
2+
"MANDATORY_INITIALIZATION_MISSING" : { message : "Missing publicKey or privateKey or urlEndpoint during ImageKit initialization", help : "" },
3+
"INVALID_TRANSFORMATION_POSITION" : { message : "Invalid transformationPosition parameter", help : "" },
4+
"CACHE_PURGE_URL_MISSING" : { message : "Missing URL parameter for this request", help : "" },
5+
"CACHE_PURGE_STATUS_ID_MISSING" : { message : "Missing Request ID parameter for this request", help : "" },
6+
"FILE_ID_MISSING" : { message : "Missing File ID parameter for this request", help : "" },
7+
"UPDATE_DATA_MISSING" : { message : "Missing file update data for this request", help : "" },
8+
"UPDATE_DATA_TAGS_INVALID" : { message : "Invalid tags parameter for this request", help : "tags should be passed as null or an array like ['tag1', 'tag2']" },
9+
"UPDATE_DATA_COORDS_INVALID" : { message : "Invalid customCoordinates parameter for this request", help : "customCoordinates should be passed as null or a string like 'x,y,width,height'" },
10+
"LIST_FILES_INPUT_MISSING" : { message : "Missing options for list files", help : "If you do not want to pass any parameter for listing, pass an empty object" },
11+
"MISSING_UPLOAD_DATA" : { message : "Missing data for upload", help : "" },
12+
"MISSING_UPLOAD_FILE_PARAMETER" : { message : "Missing file parameter for upload", help : "" },
13+
"MISSING_UPLOAD_FILENAME_PARAMETER" : { message : "Missing fileName parameter for upload", help : "" }
14+
}

constants/supportedTransforms.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
module.exports = {
2+
"HEIGHT" : "h",
3+
"WIDTH" : "w",
4+
"ASPECT_RATIO" : "ar",
5+
"QUALITY" : "q",
6+
"CROP" : "c",
7+
"CROP_MODE" : "cm",
8+
"X" : "x",
9+
"Y" : "y",
10+
"FOCUS" : "fo",
11+
"FORMAT" : "f",
12+
"RADIUS" : "r",
13+
"BACKGROUND" : "bg",
14+
"BORDER" : "bo",
15+
"ROTATION" : "rt",
16+
"BLUR" : "bl",
17+
"NAMED" : "n",
18+
"OVERLAY_IMAGE" : "oi",
19+
"OVERLAY_X" : "ox",
20+
"OVERLAY_Y" : "oy",
21+
"OVERLAY_FOCUS" : "ofo",
22+
"OVERLAY_HEIGHT" : "oh",
23+
"OVERLAY_WIDTH" : "ow",
24+
"OVERLAY_TEXT" : "ot",
25+
"OVERLAY_TEXT_FONT_SIZE" : "ots",
26+
"OVERLAY_TEXT_FONT_FAMILY" : "otf",
27+
"OVERLAY_TEXT_COLOR" : "otc",
28+
"OVERLAY_ALPHA" : "oa",
29+
"OVERLAY_TEXT_TYPOGRAPHY" : "ott",
30+
"OVERLAY_BACKGROUND" : "obg",
31+
"OVERLAY_IMAGE_TRIM" : "oit",
32+
"PROGRESSIVE" : "pr",
33+
"LOSSLESS" : "lo",
34+
"TRIM" : "t",
35+
"METADATA" : "md",
36+
"COLOR_PROFILE" : "cp",
37+
"DEFAULT_IMAGE" : "di",
38+
"DPR" : "dpr",
39+
"EFFECT_SHARPEN" : "e-sharpen",
40+
"EFFECT_USM" : "e-usm",
41+
"EFFECT_CONTRAST" : "e-contrast",
42+
"EFFECT_GRAY" : "e-grayscale",
43+
"ORIGINAL" : "orig"
44+
};

demo/index.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
var ImageKit = require("../index");
2+
3+
var imagekit = new ImageKit({
4+
publicKey : "your_public_api_key",
5+
privateKey : "your_private_api_key",
6+
urlEndpoint : "https://ik.imagekit.io/your_imagekit_id/"
7+
})
8+
9+
var imageURL = imagekit.url({
10+
path : "/default-image.jpg",
11+
queryParameters : {
12+
v : "1",
13+
q : "something"
14+
},
15+
transformation : [{
16+
"HEIGHT" : "300",
17+
"WIDTH" : "400",
18+
"EFFECT_GRAY" : "-",
19+
"PROGRESSIVE" : "true",
20+
"EFFECT_SHARPEN" : "2",
21+
"EFFECT_CONTRAST" : "-"
22+
}, {
23+
HEIGHT : "500",
24+
"EFFECT_SHARPEN" : "1",
25+
"EFFECT_USM" : "2_2_0.1_0.008"
26+
}],
27+
signed : true,
28+
expireSeconds : 10
29+
});
30+
31+
var authenticationParameters = imagekit.getAuthenticationParameters("your_token");
32+
33+
imagekit.purgeCache("full_url", function(err, body) { /*console.log(arguments);*/ });
34+
imagekit.getPurgeCacheStatus("cache_request_id", function(err, body) { /*console.log(arguments);*/ });
35+
imagekit.deleteFile("file_id", function(err, body) { /*console.log(arguments);*/ });
36+
imagekit.getFileDetails("file_id", function(err, body) { /*console.log(arguments);*/ });
37+
imagekit.getFileMetadata("file_id", function(err, body) { /*console.log(arguments);*/ });
38+
imagekit.updateFileDetails("file_id", { tags : ['image_tag'] }, function(err, body) { /*console.log(arguments);*/ });
39+
imagekit.upload({file : "your_file", fileName : "your_file_name.jpg"}, function(err, body) { /*console.log(arguments);*/ });

index.js

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
/*
2+
Helper Modules
3+
*/
4+
var _ = require('lodash');
5+
6+
/*
7+
Implementations
8+
*/
9+
var url = require('./libs/url');
10+
var upload = require('./libs/upload');
11+
var manage = require('./libs/manage');
12+
var signature = require('./libs/signature');
13+
14+
/*
15+
Utils
16+
*/
17+
var transformationUtils = require('./utils/transformation');
18+
var errorMessages = require("./constants/errorMessages");
19+
20+
var ImageKit = function(opts) {
21+
opts = opts || {};
22+
this.options = {
23+
publicKey : "",
24+
privateKey : "",
25+
urlEndpoint : "",
26+
transformationPosition : transformationUtils.getDefault()
27+
};
28+
29+
this.options = _.extend(this.options, opts);
30+
if(!mandatoryParametersAvailable(this.options)) {
31+
throw new Error(errorMessages.MANDATORY_INITIALIZATION_MISSING);
32+
}
33+
34+
if(!transformationUtils.validParameters(this.options)) {
35+
throw new Error(errorMessages.INVALID_TRANSFORMATION_POSITION);
36+
}
37+
38+
/*
39+
URL Builder
40+
*/
41+
this.url = function(urlOptions) {
42+
return url(urlOptions, this.options);
43+
};
44+
45+
/*
46+
Upload API
47+
*/
48+
this.upload = function(uploadOptions, callback) {
49+
return upload(uploadOptions, this.options, callback);
50+
};
51+
52+
/*
53+
Image Management APIs
54+
*/
55+
56+
//List and Search Files API
57+
this.listFiles = function(listOptions, callback) {
58+
return manage.listFiles(listOptions, this.options, callback);
59+
};
60+
61+
//Get File Details API
62+
this.getFileDetails = function(fileId, callback) {
63+
return manage.getFileDetails(fileId, this.options, callback);
64+
};
65+
66+
//Get File Metadata API
67+
this.getFileMetadata = function(fileId, callback) {
68+
return manage.getFileMetadata(fileId, this.options, callback);
69+
};
70+
71+
//Update File Details API
72+
this.updateFileDetails = function(fileId, updateData, callback) {
73+
return manage.updateFileDetails(fileId, updateData, this.options, callback);
74+
};
75+
76+
//Delete File API
77+
this.deleteFile = function(fileId, callback) {
78+
return manage.deleteFile(fileId, this.options, callback);
79+
};
80+
81+
//Purge Cache API
82+
this.purgeCache = function(url, callback) {
83+
return manage.purgeCache(url, this.options, callback);
84+
};
85+
86+
//Purge Cache Status API
87+
this.getPurgeCacheStatus = function(requestId, callback) {
88+
return manage.getPurgeCacheStatus(requestId, this.options, callback);
89+
};
90+
91+
//To generate Signature for upload request
92+
this.getAuthenticationParameters = function(token, timestamp) {
93+
return signature.getAuthenticationParameters(token, timestamp, this.options);
94+
}
95+
96+
};
97+
98+
function mandatoryParametersAvailable(options) {
99+
return options.publicKey && options.privateKey && options.urlEndpoint;
100+
}
101+
102+
module.exports = ImageKit;

libs/manage/cache.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
var errorMessages = require("../../constants/errorMessages");
2+
var respond = require("../../utils/respond");
3+
var request = require("../../utils/request");
4+
5+
module.exports.purgeCache = function(url, defaultOptions, callback) {
6+
if(!url) {
7+
respond(true, errorMessages.CACHE_PURGE_URL_MISSING, callback);
8+
return;
9+
}
10+
11+
var requestOptions = {
12+
url : "https://api.imagekit.io/v1/files/purge",
13+
method : "POST",
14+
json : {
15+
"url" : url
16+
}
17+
};
18+
19+
request(requestOptions, defaultOptions, function(err, response, body) {
20+
if(err) {
21+
respond(true, err, callback);
22+
return;
23+
}
24+
25+
respond(false, body, callback);
26+
});
27+
};
28+
29+
module.exports.getPurgeCacheStatus = function(requestId, defaultOptions, callback) {
30+
if(!requestId) {
31+
respond(true, errorMessages.CACHE_PURGE_STATUS_ID_MISSING, callback);
32+
return;
33+
}
34+
35+
var requestOptions = {
36+
url : "https://api.imagekit.io/v1/files/purge/" + requestId,
37+
method : "GET",
38+
json : true
39+
};
40+
41+
request(requestOptions, defaultOptions, function(err, response, body) {
42+
if(err) {
43+
respond(true, err, callback);
44+
return;
45+
}
46+
47+
respond(false, body, callback);
48+
});
49+
};

0 commit comments

Comments
 (0)