-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.coffee
More file actions
117 lines (90 loc) · 3.52 KB
/
app.coffee
File metadata and controls
117 lines (90 loc) · 3.52 KB
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
# External dependencies.
azure = require 'azure'
express = require 'express'
http = require 'http'
nconf = require 'nconf'
passport = require 'passport'
path = require 'path'
# Internal dependencies.
controllers = require './controllers'
users = require './controllers/user'
nconf.env().file({file: 'config.json'})
partitionKey = nconf.get 'PARTITION_KEY'
accountName = nconf.get 'STORAGE_NAME'
accountKey = nconf.get 'STORAGE_KEY'
app = express()
app.configure ->
app.set 'port', process.env.PORT || 3000
app.set 'views', __dirname + '/views'
app.set 'view engine', 'jade'
app.use express.logger('dev')
app.use express.bodyParser()
app.use express.methodOverride()
app.use express.cookieParser()
#app.use express.session({ secret: 'secret' }));
app.use express.session({cookie: { path: '/', httpOnly: true, maxAge: null }, secret:'eeuqram'})
app.use passport.initialize()
app.use passport.session()
app.use app.router
app.use express.static(path.join(__dirname, 'public'))
UserModel = require('./models/user')
userModel = new UserModel(
azure.createTableService(accountName, accountKey),
nconf.get('USER_TABLE_NAME'),
partitionKey
)
FashunModel = require('./models/fashun')
fashunModel = new FashunModel(
azure.createTableService(accountName, accountKey),
azure.createBlobService(accountName, accountKey),
nconf.get('FASHUN_TABLE_NAME'),
partitionKey
)
TagModel = require('./models/tag')
tagModel = new TagModel(
azure.createTableService(accountName, accountKey),
nconf.get('TAG_TABLE_NAME'),
partitionKey
)
FashunController = require('./controllers/fashun')
fashunController = new FashunController(fashunModel, tagModel)
TagController = require('./controllers/tag')
tagController = new TagController(tagModel)
UserController = require('./controllers/user')
userController = new UserController(fashunModel)
#setup passport.
facebookStrategy = require('passport-facebook').Strategy
passport.use(new facebookStrategy({
clientID: nconf.get("FB_APP_ID"),
clientSecret: nconf.get("FB_APP_SECRET"),
callbackURL: "/auth/facebook/callback"
},
(req, accessToken, refreshToken, profile, done) ->
userModel.createUserIfNotExists(profile, done)
)
)
passport.serializeUser((user, done) ->
done(null, user.profileId)
)
passport.deserializeUser((profileId, done) ->
userModel.findById(profileId, (err, user) ->
done(err, user)
)
)
app.get '/', controllers.index
app.get '/fashuns/popular', fashunController.getPopularFashuns.bind(fashunController)
app.post '/fashuns/add', fashunController.addFashun.bind(fashunController)
app.post '/fashuns/update/:rowkey', fashunController.updateFashun.bind(fashunController)
app.get '/fashuns/:rowkey', fashunController.getFashun.bind(fashunController)
app.post '/tags/add', tagController.addTag.bind(tagController)
app.post '/tags/get/:rowkey', tagController.getTag.bind(tagController)
app.post '/tags/get/:fashunRowKey', tagController.getLinkedTags.bind(tagController)
app.get '/users/me', userController.getMe.bind(userController)
app.get '/users/:rowkey', userController.getUser.bind(userController)
app.get '/auth/facebook', passport.authenticate('facebook')
app.get '/auth/facebook/callback', passport.authenticate('facebook', { successRedirect: '/', failureRedirect: '/login' })
app.get '/logout', (req, res) ->
req.logout()
res.redirect('/')
app.configure 'development', -> app.use(express.errorHandler())
http.createServer(app).listen(app.get('port'), -> console.log("Express server listening on port " + app.get('port')))