Skip to content

Commit 8b2813a

Browse files
ANKUR DWIVEDIANKUR DWIVEDI
authored andcommitted
fix url for '
1 parent 9fe6eb0 commit 8b2813a

File tree

2 files changed

+18
-24
lines changed

2 files changed

+18
-24
lines changed

libs/url/builder.ts

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
Helper Modules
33
*/
4-
import url, { UrlWithStringQuery, URLSearchParams } from "url";
4+
import { URLSearchParams, URL } from "url";
55
import path from "path";
66
import crypto from "crypto";
77

@@ -38,32 +38,21 @@ export const encodeStringIfRequired = (str: string) => {
3838
}
3939

4040
const buildURL = function (opts: FinalUrlOptions): string {
41-
//Create correct query parameters
42-
var parsedURL: UrlWithStringQuery;
43-
var parsedHost: UrlWithStringQuery;
4441
var isSrcParameterUsedForURL: boolean = false;
4542

46-
var urlObject: { [key: string]: string | null } = { host: "", pathname: "", search: "" };
43+
var urlObject: URL;
4744

4845
if (opts.path) {
49-
parsedURL = url.parse(opts.path);
50-
parsedHost = url.parse(opts.urlEndpoint);
51-
52-
urlObject.protocol = parsedHost.protocol;
53-
urlObject.host = opts.urlEndpoint.replace(urlObject.protocol + "//", "");
46+
urlObject = new URL(opts.urlEndpoint)
5447
} else if (opts.src) {
55-
parsedURL = url.parse(opts.src);
5648
isSrcParameterUsedForURL = true;
57-
58-
urlObject.host = [parsedURL.auth, parsedURL.auth ? "@" : "", parsedURL.host].join("");
59-
urlObject.protocol = parsedURL.protocol;
49+
urlObject = new URL(opts.src)
6050
} else {
6151
return "";
6252
}
6353

64-
urlObject.pathname = parsedURL.pathname ? parsedURL.pathname : "";
6554

66-
var queryParameters = new URLSearchParams(parsedURL.query || "");
55+
var queryParameters = new URLSearchParams(urlObject.search || "");
6756
for (var i in opts.queryParameters) {
6857
queryParameters.set(i, opts.queryParameters[i]);
6958
}
@@ -75,13 +64,18 @@ const buildURL = function (opts: FinalUrlOptions): string {
7564
//string should be added only as a query parameter
7665
if (transformationUtils.addAsQueryParameter(opts) || isSrcParameterUsedForURL) {
7766
queryParameters.set(TRANSFORMATION_PARAMETER, transformationString);
67+
urlObject.pathname= `${urlObject.pathname}${opts.path||''}`;
7868
} else {
7969
urlObject.pathname = path.posix.join(
80-
[TRANSFORMATION_PARAMETER, transformationString].join(transformationUtils.getChainTransformDelimiter()),
8170
urlObject.pathname,
71+
[TRANSFORMATION_PARAMETER, transformationString].join(transformationUtils.getChainTransformDelimiter()),
72+
opts.path || '',
8273
);
8374
}
8475
}
76+
else{
77+
urlObject.pathname= `${urlObject.pathname}${opts.path||''}`;
78+
}
8579

8680
urlObject.host = urlFormatter.removeTrailingSlash(urlObject.host);
8781
urlObject.pathname = urlFormatter.addLeadingSlash(urlObject.pathname);
@@ -107,7 +101,7 @@ const buildURL = function (opts: FinalUrlOptions): string {
107101
expiryTimestamp = DEFAULT_TIMESTAMP;
108102
}
109103

110-
var intermediateURL = url.format(urlObject);
104+
var intermediateURL = urlObject.href;
111105

112106
var urlSignature = getSignature({
113107
privateKey: opts.privateKey,
@@ -122,8 +116,7 @@ const buildURL = function (opts: FinalUrlOptions): string {
122116
queryParameters.set(SIGNATURE_PARAMETER, urlSignature);
123117
urlObject.search = queryParameters.toString();
124118
}
125-
126-
return url.format(urlObject);
119+
return urlObject.href;
127120
};
128121

129122
function constructTransformationString(inputTransformation: Array<Transformation> | undefined) {

tests/url-generation.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ describe("URL generation", function () {
7474
path: "/test_é_path_alt.jpg",
7575
signed: true,
7676
});
77-
expect(url).equal(`https://ik.imagekit.io/test_url_endpoint/test_é_path_alt.jpg?ik-s=${signature}`);
77+
expect(url).equal(`https://ik.imagekit.io/test_url_endpoint/test_%C3%A9_path_alt.jpg?ik-s=${signature}`);
7878
});
7979

8080
it("Signed URL with é in filename and path", function () {
@@ -91,7 +91,8 @@ describe("URL generation", function () {
9191
path: "/aéb/test_é_path_alt.jpg",
9292
signed: true,
9393
});
94-
expect(url).equal(`https://ik.imagekit.io/test_url_endpoint/aéb/test_é_path_alt.jpg?ik-s=${signature}`);
94+
console.log({signature})
95+
expect(url).equal(`https://ik.imagekit.io/test_url_endpoint/a%C3%A9b/test_%C3%A9_path_alt.jpg?ik-s=${signature}`);
9596
});
9697

9798
it("Signed URL with é in filename, path and transformation as path", function () {
@@ -112,7 +113,7 @@ describe("URL generation", function () {
112113
transformationPosition: "path",
113114
});
114115
expect(url).equal(
115-
`https://ik.imagekit.io/test_url_endpoint/tr:l-text,i-Imagekité,fs-50,l-end/aéb/test_é_path_alt.jpg?ik-s=${signature}`
116+
`https://ik.imagekit.io/test_url_endpoint/tr:l-text,i-Imagekit%C3%A9,fs-50,l-end/a%C3%A9b/test_%C3%A9_path_alt.jpg?ik-s=${signature}`
116117
);
117118
});
118119

@@ -133,7 +134,7 @@ describe("URL generation", function () {
133134
transformationPosition: "query",
134135
});
135136
expect(url).equal(
136-
`https://ik.imagekit.io/test_url_endpoint/aéb/test_é_path_alt.jpg?tr=l-text%2Ci-Imagekit%C3%A9%2Cfs-50%2Cl-end&ik-s=${signature}`
137+
`https://ik.imagekit.io/test_url_endpoint/a%C3%A9b/test_%C3%A9_path_alt.jpg?tr=l-text%2Ci-Imagekit%C3%A9%2Cfs-50%2Cl-end&ik-s=${signature}`
137138
);
138139
});
139140

0 commit comments

Comments
 (0)