-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
118 lines (94 loc) · 2.97 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
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
// setup npm libraries
require('dotenv').config();
const Express = require('express');
const ejsLayouts = require("express-ejs-layouts");
const helmet = require('helmet');
const session = require("express-session");
const flash = require("connect-flash");
const passport = require('./config/ppConfig');
const moment = require('moment');
const db = require('./models');
const isLoggedIn = require('./middleware/isLoggedIn');
const SequelizeStore = require('connect-session-sequelize')(session.Store);
const Spotify = require('node-spotify-api');
const { search } = require('./controllers');
// app setup
const app = Express();
app.use(Express.urlencoded({ extended: false }));
app.use(Express.static(__dirname + "/public"));
app.set('view engine','ejs');
app.use(ejsLayouts);
app.use(require('morgan')('dev'));
app.use(helmet());
// middleware that allows us to access the 'moment' library in every EJS view
app.use(function(req, res, next) {
res.locals.moment = moment
next()
})
// create new instance of class Sequelize Store
const sessionStore = new SequelizeStore({
db: db.sequelize,
expiration: 1000 * 60 * 30
});
// create a API Spotify Client
let spotify = new Spotify({
id: process.env.CLIENT_ID,
secret: process.env.CLIENT_SECRET
});
//Store the results of a request to spotify
let results = [];
app.use(session({
secret: process.env.SESSION_SECRET,
store: sessionStore,
resave: false,
saveUninitialized: true
}))
sessionStore.sync();
// initialize passport and session info
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
app.use(function(req, res, next) {
res.locals.alerts = req.flash();
res.locals.currentUser = req.user;
next();
});
// ROUTES
app.get('/', function(req, res) {
// check to see if user logged in
res.render('index');
})
app.get('/profile', isLoggedIn, function(req, res) {
// console.log(results);
db.playlist.findAll({
where: { userId: req.user.id }
}).then(playlists => {
res.render('auth/profile', { playlists});
})
});
app.get('/search', function(req, res) {
// console.log(results);
res.render('auth/search', {title: 'Spotify', results: results});
});
// view albums from artist
app.get('/albums/:id', (req, res) => {
spotify
.request('https://api.spotify.com/v1/artists/'+ req.params.id + '/albums')
.then(function(data) {
// console.log(data);
res.render('playlists/albums', {results: data.items})
})
.catch(function(err) {
console.error('Error occurred: ' + err);
})
});
// include auth controller
app.use('/auth', require('./controllers/auth'));
app.use('/tracks', require('./controllers/tracks'));
app.use('/users', require('./controllers/users'));
app.use('/playlists', require('./controllers/playlists'));
// initialize App on Port
app.listen(process.env.PORT || 8080, function() {
console.log(`Listening to the smooth sweet sounds on port ${process.env.PORT} 🛰.`);
});
// module.exports = server