Skip to content

Commit 1d3bce8

Browse files
authored
fix: respect x-amz-meta-last-modified (#627)
1 parent 4508dae commit 1d3bce8

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

src/utils/last-modified.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,11 @@ export function updateLastModified(state, res, httpDate) {
4545
* @return {string} the last modified date
4646
*/
4747
export function extractLastModified(headers) {
48-
const lastModified = headers.get('x-amz-meta-x-source-last-modified');
48+
let lastModified = headers.get('x-amz-meta-x-source-last-modified');
49+
if (lastModified && lastModified !== 'null') {
50+
return lastModified;
51+
}
52+
lastModified = headers.get('x-amz-meta-last-modified');
4953
if (lastModified && lastModified !== 'null') {
5054
return lastModified;
5155
}

test/utils/last-modified.test.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,49 @@ describe('Last Modified Utils Test', () => {
6060
assert.strictEqual(res.headers.get('last-modified'), 'Wed, 12 Jan 2022 09:33:01 GMT');
6161
});
6262

63+
it('uses meta source-last-modified', async () => {
64+
/** @type PipelineResponse */
65+
const res = {
66+
headers: new Map([
67+
['last-modified', 'Wed, 12 Jan 2022 09:33:01 GMT'],
68+
['x-amz-meta-x-source-last-modified', 'Wed, 13 Jan 2022 09:33:01 GMT'],
69+
]),
70+
};
71+
const date = extractLastModified(res.headers);
72+
assert.strictEqual(date, 'Wed, 13 Jan 2022 09:33:01 GMT');
73+
});
74+
75+
it('uses meta last-modified', async () => {
76+
/** @type PipelineResponse */
77+
const res = {
78+
headers: new Map([
79+
['last-modified', 'Wed, 12 Jan 2022 09:33:01 GMT'],
80+
['x-amz-meta-last-modified', 'Wed, 13 Jan 2022 09:33:01 GMT'],
81+
]),
82+
};
83+
const date = extractLastModified(res.headers);
84+
assert.strictEqual(date, 'Wed, 13 Jan 2022 09:33:01 GMT');
85+
});
86+
6387
it('uses last-modified when meta source-last-modified is "null"', async () => {
88+
/** @type PipelineResponse */
89+
const res = {
90+
headers: new Map([
91+
['last-modified', 'Wed, 12 Jan 2022 09:33:01 GMT'],
92+
['x-amz-meta-x-source-last-modified', 'Wed, 12 Jan 2022 09:33:01 GMT'],
93+
]),
94+
};
95+
const date = extractLastModified(res.headers);
96+
assert.strictEqual(date, 'Wed, 12 Jan 2022 09:33:01 GMT');
97+
});
98+
99+
it('uses last-modified when meta last-modified is "null"', async () => {
64100
/** @type PipelineResponse */
65101
const res = {
66102
headers: new Map([
67103
['last-modified', 'Wed, 12 Jan 2022 09:33:01 GMT'],
68104
['x-amz-meta-x-source-last-modified', 'null'],
105+
['x-amz-meta-last-modified', 'null'],
69106
]),
70107
};
71108
const date = extractLastModified(res.headers);

0 commit comments

Comments
 (0)