-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.js
executable file
·89 lines (74 loc) · 2.48 KB
/
app.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
87
88
89
/* app.js
Copyright 2017 Fast Dog Coding, LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy
of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
*/
'use strict';
// Required modules
const express = require('express');
const hbs = require('hbs');
const cfenv = require('cfenv');
const database = require('./database');
// create a new express server
let app = express();
// express set up
app.set('view engine', 'hbs');
app.set('views', __dirname + '/views');
app.use(express.static(__dirname + '/public'));
// get the app environment from Cloud Foundry
let appEnv = cfenv.getAppEnv(require('./config'));
database.init(appEnv, 'cloudant-resume-fdc');
// set up handlebars view plugin (hbs)
hbs.registerPartials(__dirname + '/views/partials', () => {
console.log('- Handlebars: partials loaded.');
});
// Routes
app.get('/', (req, res, next) => {
database.getResume('resume-default')
.then(resume => {
// console.log('Resume: ', resume);
res.status(200)
.render('layout', resume);
})
.catch(error => next(error));
});
app.get('/chart', (req, res, next) => {
database.getDocument('chartData-goals')
.then(doc => {
res.status(200)
.json(doc.data);
})
.catch(error => next(error));
});
app.get('/data/:id', (req, res, next) => {
database.getDocument(req.params.id)
.then(doc => {
res.status(200)
.json(doc.skills);
})
.catch(error => next(error));
});
// Error handler
app.use(function (err, req, res, next) {
if (res.headersSent) {
return next(err);
}
// err.name = err.name || 'Error';
err.statusCode = err.statusCode || 500;
// err.message = (err.message ? err.message : err.error);
console.dir(err);
// console.error(err);
res.status(err.statusCode)
.render('layout', err);
});
// Start server on the specified port and binding host
app.listen(appEnv.port || '3002', appEnv.bind, function () {
console.log("Started server listening at " + appEnv.url);
});