forked from totaljs/examples
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdefault.js
More file actions
93 lines (72 loc) · 2.06 KB
/
default.js
File metadata and controls
93 lines (72 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
exports.install = function() {
F.route('/', view_homepage);
F.route('/dynamic/date/', view_dynamic_modified);
F.route('/dynamic/etag/', view_dynamic_etag);
F.route('/date/', view_modified);
F.route('/etag/', view_etag);
};
function view_homepage() {
var self = this;
var builder = [];
builder.push('Run location:');
builder.push('');
builder.push(self.req.hostname('/date/'));
builder.push(self.req.hostname('/etag/'));
builder.push(self.req.hostname('/dynamic/date/'));
builder.push(self.req.hostname('/dynamic/etag/'));
self.plain(builder.join('\n'));
}
function view_dynamic_modified() {
var self = this;
// Check header
//
// @date {Date} :: optional, default: new Date()
// @strict {Boolean} :: optional, default: false
//
// if @strict === false then header['if-modified-since'] > @date return 304
// if @strict === true then header['if-modified-since'] === @date return 304
//
// ifNotModified([date], [strict])
if (self.notModified())
return;
self.layout('');
self.view('modified');
}
function view_modified() {
var self = this;
// Check header
//
// @date {Date} :: optional, default: new Date()
// @strict {Boolean} :: optional, default: false
//
// if @strict === false then header['if-modified-since'] > @date return 304
// if @strict === true then header['if-modified-since'] === @date return 304
//
// ifNotModified([date], [strict])
if (self.notModified())
return;
// if (self.ifNotModified(new Date().add('minute', 5)))
// return;
// if value == date then framework uses Last-Modified else Etag
// set not modified to 5 minute
self.setModified(new Date().add('minute', 5));
// show Firebug and call 3x refresh
self.plain('modified');
}
function view_dynamic_etag() {
var self = this;
if (self.notModified('123456'))
return;
self.layout('');
self.view('etag');
}
function view_etag() {
var self = this;
var etag = 'abc123456';
if (self.notModified(etag))
return;
// if value == string then framework uses Etag else Last-Modified
self.setModified(etag);
// show Firebug and call 3x refresh
self.plain('etag');
}