Skip to content

Commit 461828d

Browse files
committed
fix: add auth endpoint and api call
1 parent f4b0628 commit 461828d

File tree

2 files changed

+76
-42
lines changed

2 files changed

+76
-42
lines changed

samples/sample-app/server/server.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ const router = express.Router();
33
const cors = require('cors');
44
const ImageKit = require('imagekit');
55
const uuid = require('uuid');
6-
const fs = require('fs');
76
const path = require('path');
87

98
const pugTemplatePath = path.join(__dirname, "../views/index.pug");
@@ -21,15 +20,24 @@ const startServer = (port = 3000, PUBLIC_KEY, PRIVATE_KEY, URL_ENDPOINT) => {
2120
urlEndpoint: URL_ENDPOINT
2221
});
2322

24-
router.get("/", (req, res) => {
23+
router.get("/auth", (req, res) => {
2524
try {
26-
// Generating security parameters.
27-
// For generating token, signature and expire again just refresh the page.
2825
const token = req.query.token || uuid.v4();
2926
const expiration = req.query.expire || parseInt(Date.now()/1000)+ (60 * 10); // Default expiration in 10 mins
27+
3028
const signatureObj = imagekit.getAuthenticationParameters(token, expiration);
29+
30+
res.status(200).send(signatureObj);
31+
32+
} catch (err) {
33+
console.error("Error while responding to auth request:", JSON.stringify(err, undefined, 2));
34+
res.status(500).send("Internal Server Error");
35+
}
36+
});
3137

32-
res.render(pugTemplatePath, {publicKey: PUBLIC_KEY, urlEndpoint: URL_ENDPOINT, signatureObj});
38+
router.get("/", (req, res) => {
39+
try {
40+
res.render(pugTemplatePath, {publicKey: PUBLIC_KEY, urlEndpoint: URL_ENDPOINT, authenticationEndpoint: `http://localhost:3000/auth`});
3341
} catch (err) {
3442
console.error("Error while responding to static page request:", JSON.stringify(err, undefined, 2));
3543
res.status(500).send("Internal Server Error");

samples/sample-app/views/index.pug

Lines changed: 63 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ html
3333
e.preventDefault();
3434
var file = document.getElementById("file1");
3535
var fileSize = file.files[0].size;
36+
var AUTH_INVALID_RESPONSE = "Invalid response from authenticationEndpoint. The SDK expects a JSON response with three fields i.e. signature, token and expire."
3637
var statusEl = document.getElementById("status");
3738
statusEl.innerHTML = "Uploading...";
3839

@@ -49,47 +50,72 @@ html
4950
}
5051
});
5152

52-
imagekit.upload({
53-
xhr: customXHR, // Use this if you want to track upload progress
54-
file : file.files[0],
55-
fileName : file.files[0].name || "test_image.jpg",
56-
tags : ["test_tag_1"],
57-
token: "!{signatureObj.token}",
58-
signature: "!{signatureObj.signature}",
59-
expire: "!{signatureObj.expire}"
60-
//- token: "63b76592-e9be-428b-8fc7-d4e15aba7506",
61-
//- expire: 1689917695,
62-
//- signature: "7ddcf61b7e54036c88ba838a9bc86fa969eb1f5b"
63-
//- extensions: [
64-
//- {
65-
//- name: "aws-auto-tagging",
66-
//- minConfidence: 80,
67-
//- maxTags: 10
68-
//- }
69-
//- ],
70-
}, function(err, result) {
71-
if (err) {
72-
statusEl.innerHTML = "Error uploading image. "+ err.message;
73-
console.log(err)
74-
} else {
75-
statusEl.innerHTML = "File Uploaded";
76-
var sampleTransformations = [{ HEIGHT: 300, WIDTH: 400}];
77-
srcUrl = result.url;
78-
transformedURL = imagekit.url({
79-
src: srcUrl,
80-
transformation : sampleTransformations
81-
});
53+
// Generating security parameters using authenticationEndpoint
54+
const securityParametersRequest = new XMLHttpRequest();
55+
securityParametersRequest.timeout = 60000;
56+
var urlObj = new URL("!{authenticationEndpoint}");
57+
securityParametersRequest.open('GET', urlObj.toString());
58+
securityParametersRequest.ontimeout = function (e) {
59+
console.log(e.message);
60+
return statusEl.innerHTML = "Timeout generating security parameters. "+ e.message
61+
};
62+
securityParametersRequest.onerror = function (e) {
63+
console.log(e.message)
64+
return statusEl.innerHTML = "Request to authenticationEndpoint failed due to network error."+ e.message
65+
}
66+
securityParametersRequest.onload = () => {
67+
if(securityParametersRequest.status === 200) {
68+
var securityParametersObj = JSON.parse(securityParametersRequest.response)
69+
70+
if(!securityParametersObj || !securityParametersObj.token || !securityParametersObj.signature || !securityParametersObj.expire) {
71+
return statusEl.innerHTML = AUTH_INVALID_RESPONSE;
72+
}
73+
74+
// Uploading image
75+
imagekit.upload({
76+
xhr: customXHR, // Use this if you want to track upload progress
77+
file : file.files[0],
78+
fileName : file.files[0].name || "test_image.jpg",
79+
tags : ["test_tag_1"],
80+
token: securityParametersObj.token,
81+
signature: securityParametersObj.signature,
82+
expire: securityParametersObj.expire,
83+
//- extensions: [
84+
//- {
85+
//- name: "aws-auto-tagging",
86+
//- minConfidence: 80,
87+
//- maxTags: 10
88+
//- }
89+
//- ],
90+
}, function(err, result) {
91+
if (err) {
92+
statusEl.innerHTML = "Error uploading image. "+ err.message;
93+
console.log(err)
94+
} else {
95+
statusEl.innerHTML = "File Uploaded";
96+
var sampleTransformations = [{ HEIGHT: 300, WIDTH: 400}];
97+
srcUrl = result.url;
98+
transformedURL = imagekit.url({
99+
src: srcUrl,
100+
transformation : sampleTransformations
101+
});
82102

83-
var orig_img = document.querySelector("#orig_image > p > img");
84-
var trans_img = document.querySelector("#trans_image > p > img");
103+
var orig_img = document.querySelector("#orig_image > p > img");
104+
var trans_img = document.querySelector("#trans_image > p > img");
85105

86-
orig_img.setAttribute("src", srcUrl);
87-
trans_img.setAttribute("src", transformedURL);
106+
orig_img.setAttribute("src", srcUrl);
107+
trans_img.setAttribute("src", transformedURL);
88108

89-
var el = document.getElementById('images')
90-
el.setAttribute("style", "");
109+
var el = document.getElementById('images')
110+
el.setAttribute("style", "");
111+
}
112+
});
113+
} else {
114+
return statusEl.innerHTML = AUTH_INVALID_RESPONSE;
91115
}
92-
});
116+
}
117+
118+
securityParametersRequest.send();
93119
}
94120
} catch(ex) {
95121
console.log(ex);

0 commit comments

Comments
 (0)