-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
86 lines (69 loc) · 2.16 KB
/
server.js
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
//app setup and auth
const express = require("express");
const app = express();
const msal = require('@azure/msal-node');
const cookieSession = require("cookie-session");
const exphbs = require('express-handlebars');
const fs = require('fs');
//custom middleware
const data = require('./lib/data');
const msalAuth = require('./lib/msal-auth');
//custom routers
const msalRouter = require('./routes/msal-router');
const formRouter = require('./routes/form-router');
const indexRouter = require('./routes/index-router');
const wpRouter = require('./routes/wp-router');
const apiRouter = require('./routes/api-router');
//scheduler
const { ToadScheduler, SimpleIntervalJob, AsyncTask } = require('toad-scheduler')
const scheduler = new ToadScheduler()
const {refresh, timestamp} = require('./lib/wp')
//handlebars interception of .html files for custom rendering
app.engine('html', exphbs({extname: '.html'}));
app.set('view engine', 'html');
// app.engine('html', hbsHelpers.engine);
// app.set('view engine', 'handlebars');
//always use cookies
app.use(cookieSession({
name: 'auth',
keys: [process.env.COOKIE_KEY],
maxAge: 168 * 60 * 60 * 1000, // 24*7 hours
}))
app.use(express.static("public"));
//router setups
const auth = express.Router()
auth.use(msalRouter)
const form = express.Router()
form.use(formRouter)
const wp = express.Router()
wp.use(wpRouter)
const index = express.Router()
index.use(indexRouter)
const api = express.Router()
api.use(apiRouter)
//attach routers
app.use('/auth', auth)
app.use('/form', form)
app.use('/wp', wp)
app.use('/', index)
app.use('/api', api)
//schedule
const task = new AsyncTask(
'Refresh Cache',
() => {
console.log({function: "Toad Refresh Cache", outcome: "running"})
return refresh().then(timestamp)
},
(e) => {
console.error({function: "Toad Refresh Cache", outcome: "failed", e})
}
)
const job = new SimpleIntervalJob({ minutes: 15, }, task)
scheduler.addSimpleIntervalJob(job)
//debug
app.get('/query', (req, res)=>{
res.sendFile(__dirname+'/views/query.html')
})
const listener = app.listen(process.env.PORT, () => {
console.log("Your app is listening on port " + listener.address().port);
});