-
Notifications
You must be signed in to change notification settings - Fork 4
/
server.coffee
50 lines (39 loc) · 1.23 KB
/
server.coffee
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
express = require 'express'
ical = require 'ical-generator'
mustache = require 'mustache-express'
moment = require 'moment'
data = require './data.json'
app = express()
app.engine 'mustache', mustache()
app.set 'view engine', 'mustache'
app.set 'views', __dirname + '/views'
DURATION = moment.duration 3, 'hours'
eventForDate = (date) ->
date = moment date
id: date+0
timestamp: date.toDate()
start: date.toDate()
end: date.clone().add(DURATION).toDate()
summary: 'SydJS'
location: '6/341 George St, Sydney NSW 2000, Australia'
cal = ical
domain: 'whenthefuckissydjs.com'
name: 'SydJS'
timezone: 'Australia/Sydney'
events: data.whenthefuckissydjs.map eventForDate
latest = moment(data.whenthefuckissydjs.slice(-1)[0])
format = (date) ->
diff = date - moment()
if diff > moment.duration 1, 'week'
"The fucking #{date.format 'Do'} of #{date.format 'MMMM'}"
else if diff > moment.duration 18, 'hours'
"On fucking #{date.format 'dddd'}"
else if diff > 0
"It's fucking today!"
else if -diff < DURATION
"Right fucking now!"
else
"I don't fucking know"
app.get '/', (req, res) -> res.render 'index', when: format latest
app.get '/ical', (req, res) -> cal.serve res
app.listen(process.env.PORT or 4400)