Skip to content

Instantly share code, notes, and snippets.

@caridy
Created December 5, 2012 02:06
Show Gist options
  • Save caridy/4211460 to your computer and use it in GitHub Desktop.
Save caridy/4211460 to your computer and use it in GitHub Desktop.
headers modified tests for static handling
function modified(req, headers) {
var modifiedSince = req.headers['if-modified-since'],
lastModified = headers['Last-Modified'],
noneMatch = req.headers['if-none-match'],
etag = headers.ETag,
etagModified = true,
dateModified = true;
// Check If-None-Match
if (noneMatch && etag && noneMatch === etag) {
etagModified = false;
}
// Check If-Modified-Since
if (modifiedSince && lastModified) {
modifiedSince = new Date(modifiedSince);
lastModified = new Date(lastModified);
// Ignore invalid dates
if (!isNaN(modifiedSince.getTime())) {
if (lastModified <= modifiedSince) {
dateModified = false;
}
}
}
return etagModified || dateModified;
}
// testing modified data
// 1. same
console.log(modified({
headers: {
'if-modified-since': 'Fri, 30 Nov 2012 21:07:52 GMT',
'if-none-match': 123
}
}, {
'Last-Modified': 'Fri, 30 Nov 2012 21:07:52 GMT',
'ETag': 123
}));
// 2. req is older
console.log(modified({
headers: {
'if-modified-since': 'Fri, 30 Nov 2012 21:01:52 GMT',
'if-none-match': 123
}
}, {
'Last-Modified': 'Fri, 30 Nov 2012 21:07:52 GMT',
'ETag': 123
}));
// 3. req is newer
console.log(modified({
headers: {
'if-modified-since': 'Fri, 30 Nov 2012 21:09:52 GMT',
'if-none-match': 123
}
}, {
'Last-Modified': 'Fri, 30 Nov 2012 21:07:52 GMT',
'ETag': 123
}));
// 4. invalid
console.log(modified({
headers: {
'if-none-match': 123
}
}, {
'Last-Modified': 'Fri, 30 Nov 2012 21:07:52 GMT',
'ETag': 123
}));
// testing etag data
// 1. same (yes duplicated)
console.log(modified({
headers: {
'if-modified-since': 'Fri, 30 Nov 2012 21:07:52 GMT',
'if-none-match': 123
}
}, {
'Last-Modified': 'Fri, 30 Nov 2012 21:07:52 GMT',
'ETag': 123
}));
// 1. different
console.log(modified({
headers: {
'if-modified-since': 'Fri, 30 Nov 2012 21:07:52 GMT',
'if-none-match': 123
}
}, {
'Last-Modified': 'Fri, 30 Nov 2012 21:07:52 GMT',
'ETag': 321
}));
// 1. invalid
console.log(modified({
headers: {
'if-modified-since': 'Fri, 30 Nov 2012 21:07:52 GMT'
}
}, {
'Last-Modified': 'Fri, 30 Nov 2012 21:07:52 GMT',
'ETag': 321
}));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment