This repository has been archived by the owner on May 10, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
executable file
·125 lines (113 loc) · 3.93 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
var express = require('express');
var favicon = require('serve-favicon');
var filesystem = require('fs');
var omdb = require('omdb');
var serveStatic = require('serve-static');
var stormpath = require('express-stormpath');
var tal = require('template-tal');
var app = express();
var oUrls = {
login: {
uri: '/users/login'
},
logout: {
uri: '/users/logout'
},
forgotPassword:{
uri: '/users/forgot-password',
nextUri: '/users/login?status=forgot'
},
changePassword:{
uri: '/users/change-password',
nextUri: '/users/login?status=reset',
errorUri: '/users/forgot-password?status=invalid_sptoken'
},
register:{
uri: "/users/register"
},
profile:{
uri: '/users/profile'
},
me:{
uri: '/users/me'
}
};
/* Register Middleware
---------------------------------------------------------------------------- */
app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(serveStatic('public/'));
app.use(function (p_oRequest, p_oResponse, p_fNext) {
/* "A man is not dead while his name is still spoken." */
p_oResponse.setHeader('X-Clacks-Overhead', 'GNU Terry Pratchett');
return p_fNext();
});
/* The Stormpath middleware must always be the last initialized middleware */
app.use(stormpath.init(app, {
website: true,
web: oUrls,
expand: {
/* In addition to managing basic user fields, Stormpath also allows you
to store up to 10MB of JSON information with each user account!
@see: http://docs.stormpath.com/nodejs/express/latest/user_data.html
*/
customData: true
}
}));
/* Define Route Handlers
---------------------------------------------------------------------------- */
app.get('*', function (p_oRequest, p_oResponse) {
// Grab HTML Template
filesystem.readFile(__dirname + '/src/templates/main.html', function (p_oError, p_oContent) {
var sResponse = '', oContext = {};
if (p_oError) {
// Could not find (or read) requested template
console.error(p_oError);
throw p_oError;
} else {
oContext.sRequest = p_oRequest.originalUrl;
oContext.oUser = p_oRequest.user;
oContext.bUser = (p_oRequest.user !== undefined);
oContext.oUrls = oUrls;
// Feed Data to Template
sResponse = tal.process(p_oContent.toString(), oContext);
// Return response
p_oResponse.send(sResponse);
}
});
});
app.get('movies/*', function (p_oRequest, p_oResponse) {
omdb.get(p_oRequest.originalUrl, function (p_oError, p_oMovies) {
if (p_oError) {
console.error(p_oError);
} else if (p_oMovies.length < 1) {
console.log('No p_oMovies were found!');
} else {
console.log('!');
p_oMovies.forEach(function (movie) {
console.log('%s (%d)', movie.title, movie.year);
});
}
});
p_oResponse.send('Requested ' + p_oRequest.originalUrl);
});
/* Handle Errors
---------------------------------------------------------------------------- */
app.use(function (p_oError, p_oRequest, p_oResponse, p_oNext) {
console.error(p_oError);
console.error(p_oError.status);
console.error(p_oError.stack);
// Can't set headers after they are sent.
// p_oResponse.status(500).send('Requested: ' + p_oRequest.originalUrl)
p_oResponse.send('Requested: ' + p_oRequest.originalUrl)
});
/* Fire up the application server
---------------------------------------------------------------------------- */
app.on('stormpath.ready', function () {
console.log('Stormpath Ready');
var server = app.listen(process.env.PORT || 8080, function () {
var host = server.address().address || 'localhost';
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port)
});
});
/*EOF*/