mirror of
https://github.com/bckelley/cgm-remote-monitor.git
synced 2026-08-24 03:14:12 -05:00
Adds the If-Modified-Since header parsing to api/v1/enties/:spec: calls (#3571)
This commit is contained in:
@@ -83,9 +83,11 @@ function configure (app, wares, ctx) {
|
||||
res.setHeader('Last-Modified', lastEntryDate.toUTCString());
|
||||
}
|
||||
|
||||
var ifModifiedSince = req.get('If-Modified-Since');
|
||||
var ifModifiedSince = req.get('If-Modified-Since');
|
||||
if (!ifModifiedSince) { return next(); }
|
||||
|
||||
console.log("CGM Entry request with If-Modified-Since: ", ifModifiedSince);
|
||||
|
||||
if (lastEntryDate.getTime() <= new Date(ifModifiedSince).getTime()) {
|
||||
res.status(304).send({status:304, message: 'Not modified', type:'internal'});
|
||||
return;
|
||||
@@ -114,6 +116,40 @@ function configure (app, wares, ctx) {
|
||||
if (res.entries_err) {
|
||||
return res.sendJSONStatus(res, consts.HTTP_INTERNAL_ERROR, 'Mongo Error', res.entries_err);
|
||||
}
|
||||
|
||||
// IF-Modified-Since support
|
||||
|
||||
function compare(a,b) {
|
||||
var a_field = a.mills ? a.mills : a.date;
|
||||
var b_field = b.mills ? b.mills : b.date;
|
||||
|
||||
if (a_field < b_field)
|
||||
return -1;
|
||||
if (a_field > b_field)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
res.entries.sort(compare);
|
||||
|
||||
var lastEntry = _.last(res.entries);
|
||||
var lastEntryDate = null;
|
||||
|
||||
if (!_.isNil(lastEntry)) {
|
||||
if (lastEntry.mills) lastEntryDate = new Date(lastEntry.mills);
|
||||
if (!lastEntry.mills && lastEntry.date ) lastEntryDate = new Date(lastEntry.date);
|
||||
res.setHeader('Last-Modified', lastEntryDate.toUTCString());
|
||||
}
|
||||
|
||||
var ifModifiedSince = req.get('If-Modified-Since');
|
||||
|
||||
console.log('If-Modified-Since: ' + new Date(ifModifiedSince) + ' Last-Modified', lastEntryDate);
|
||||
|
||||
if (lastEntryDate !== null && ifModifiedSince !== null && lastEntryDate.getTime() <= new Date(ifModifiedSince).getTime()) {
|
||||
res.status(304).send({status:304, message: 'Not modified', type:'internal'});
|
||||
return;
|
||||
}
|
||||
|
||||
// if no error, format the payload
|
||||
// The general pattern here is to create an output stream that reformats
|
||||
// the data correctly into the desired representation.
|
||||
|
||||
Reference in New Issue
Block a user