-
Notifications
You must be signed in to change notification settings - Fork 50
/
index.js
125 lines (113 loc) · 3.78 KB
/
index.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
'use strict'
var config = require('../custom_configFile.json');
if(!config.twitterConsumerKey || !config.twitterConsumerSecret || !config.twitterCallbackUrl){
config.twitterConsumerKey = "placeholder";
config.twitterConsumerSecret = "placeholder";
config.twitterCallbackUrl = "placeholder";
}
var express = require('express');
var morgan = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session')
var app = express();
var ejs = require('ejs');
var passport = require('passport'),
TwitterStrategy = require('passport-twitter').Strategy;
var Twitter = require('twitter');
var request = require('request');
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.static(require('path').resolve('.', 'build')));
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(session({
secret: 'keyboard cat',
resave: true,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(obj, done) {
done(null, obj);
});
passport.use(new TwitterStrategy({
consumerKey: config.twitterConsumerKey,
consumerSecret: config.twitterConsumerSecret,
callbackURL: config.twitterCallbackUrl
},
function(token, tokenSecret, profile, done) {
process.nextTick(function() {
console.log(token);
console.log(tokenSecret);
profile.oauth_token = token;
profile.oauth_token_secret = tokenSecret;
return done(null, profile);
});
}
));
app.get('/account', ensureAuthenticated, function(req, res) {
//Code to push user data to backend
var userObject = {};
userObject['screen_name'] = req.user.username;
userObject['oauth_token'] = req.user.oauth_token;
userObject['oauth_token_secret'] = req.user.oauth_token_secret;
userObject['source_type'] = "TWITTER";
var requestJSON = JSON.stringify(userObject);
request('http://localhost:9100/api/account.json?action=update&data=' + requestJSON, function (error, response, body) {
if (!error && response.statusCode == 200) {
res.render('index');
}
else {
console.log("The user was not saved in loklak_server. Handle this error");
res.render('index');
}
})
});
app.get('/auth/twitter', passport.authenticate('twitter'), function(req, res) {
});
app.get('/auth/twitter/callback', passport.authenticate('twitter', {
failureRedirect: ''
}), function(req, res) {
res.redirect('/account');
});
app.post('/newTweet', ensureAuthenticated, function(req, res) {
var client = new Twitter({
consumer_key: config.twitterConsumerKey,
consumer_secret: config.twitterConsumerSecret,
access_token_key: req.user.oauth_token,
access_token_secret: req.user.oauth_token_secret
});
client.post('statuses/update', {
status: req.body.tweetbody
}, function(error, tweet, response) {
if (error) {
res.send(error)
};
res.send(response); // Raw response object.
});
})
var server = app.listen(3001, function() {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
console.log("Auth failed");
}
//this should always be after all the express routes have been declared.
//it serves the angular app
app.get('*', function(req, res) {
res.sendFile('index.html', {
root: require('path').resolve('.', 'build')
});
});