Skip to content

Commit ace3b5e

Browse files
authored
fix: create correct v4 signed url with cname (#868)
1 parent 3351c7b commit ace3b5e

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

src/file.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2587,7 +2587,8 @@ class File extends ServiceObject<File> {
25872587
}
25882588

25892589
const extensionHeaders = Object.assign({}, config.extensionHeaders);
2590-
extensionHeaders.host = 'storage.googleapis.com';
2590+
const fqdn = new url.URL(config.cname || STORAGE_DOWNLOAD_BASE_URL);
2591+
extensionHeaders.host = fqdn.host;
25912592
if (config.method === 'POST') {
25922593
extensionHeaders['x-goog-resumable'] = 'start';
25932594
}
@@ -2625,7 +2626,7 @@ class File extends ServiceObject<File> {
26252626

26262627
const canonicalRequest = [
26272628
config.method,
2628-
config.resource,
2629+
config.cname ? `/${config.name}` : config.resource,
26292630
canonicalQueryParams,
26302631
extensionHeadersString,
26312632
signedHeaders,

test/file.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3040,6 +3040,29 @@ describe('File', () => {
30403040
}
30413041
);
30423042
});
3043+
3044+
it('should generate v4 signed url with provided cname', done => {
3045+
const host = 'http://www.example.com';
3046+
3047+
file.getSignedUrl(
3048+
{
3049+
action: 'read',
3050+
cname: host,
3051+
version: 'v4',
3052+
expires: Date.now() + 2000,
3053+
},
3054+
(err: Error, signedUrl: string) => {
3055+
assert.ifError(err);
3056+
const expected =
3057+
'http://www.example.com/file-name.png?' +
3058+
'X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=client-email' +
3059+
'%2F20190318%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20190318T000000Z&' +
3060+
'X-Goog-Expires=2&X-Goog-SignedHeaders=host&X-Goog-Signature=b228276adbab';
3061+
assert.strictEqual(signedUrl, expected);
3062+
done();
3063+
}
3064+
);
3065+
});
30433066
});
30443067

30453068
describe('promptSaveAs', () => {

0 commit comments

Comments
 (0)