Skip to content

Commit

Permalink
Added Mongoose, Socket.io, Login with Twitter, and Twitter Stream API
Browse files Browse the repository at this point in the history
  • Loading branch information
d0nd3r3k committed Dec 9, 2014
1 parent 3e504b7 commit 2d46612
Show file tree
Hide file tree
Showing 8 changed files with 192 additions and 8 deletions.
9 changes: 9 additions & 0 deletions a51/synth.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
var baudio = require('baudio');

var n = 0;
var b = baudio(function (t) {
var x = Math.sin(t * 262 + Math.sin(n));
n += Math.sin(t);
return x;
});
b.play();
1 change: 1 addition & 0 deletions a51/violent-theremin
Submodule violent-theremin added at c9e406
79 changes: 74 additions & 5 deletions app.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,39 @@

/**
* Module dependencies.
*/

var mongoose = require('mongoose');
var http = require('http');
var express = require('express');
var passport = require('passport');
var routes = require('./routes');
var http = require('http');
var controller = require('./controller');
var path = require('path');
var config = require('./config');
var twitter = require('ntwitter');

mongoose.connect(config.db);

var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);

var twit = new twitter({
consumer_key: config.consumer_key,
consumer_secret: config.consumer_secret,
access_token_key: config.ac_key,
access_token_secret: config.ac_secret
});

// all environments
app.set('port', process.env.PORT || 8080);
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.cookieParser());
app.use(express.session({ secret: config.session_secret }));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
Expand All @@ -26,8 +45,58 @@ if ('development' == app.get('env')) {
app.use(express.errorHandler());
}

//Routes
app.get('/', routes.index);

http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
app.get('/tweet/:msg', routes.tweet)

app.get('/auth/twitter',
passport.authenticate('twitter'),
routes.auth);

app.get('/auth/twitter/callback',
passport.authenticate('twitter', { failureRedirect: '/login' }),
routes.auth_cb);

app.get('/logout', routes.logout);

//Middlewear
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) { return next(); }
res.redirect('/')
}

http.listen(app.get('port'), function(){
console.log('MM0DM server listening on port ' + app.get('port'));
});

//Socket.io & Twitter Stream API
var users = []
io.on('connection', function (socket) {
users.push(socket);
});

var watch = ['#MMODrumMachine'];

twit.verifyCredentials(function (err, data) {
if(err) console.log(err);
})
.stream('user', {track:watch}, function(stream) {
console.log("Twitter stream is ready and waiting for inc tweets...");
stream.on('data', function (data) {
if (data.text !== undefined) {
var name = data.user.screen_name;

var tweet_txt = data.text.split("#");
var notes = tweet_txt[0].split("");
notes.pop();
console.log(notes)
//socket.emit('notes', notes);

}
});

stream.on('error', function (err, code) {
console.log("err: "+err+" "+code)
});
});
12 changes: 12 additions & 0 deletions config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* Change configuration here.duh.
*/
module.exports = {
consumer_key: 'twitter_consumer_key',
consumer_secret: 'twitter_consumer_secret',
ac_key:'twitter_access_token_key',
ac_secret:'twitter_access_token_secret',
cb_url:'twitter_callback_url',
db:'mongodb://localhost/dbname',
session_secret:'session_secret'
}
47 changes: 47 additions & 0 deletions controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* Conroller module: Logins with passport Twitter and stores new user.
*/

var mongoose = require('mongoose');
var passport = require('passport');
var TwitterStrategy = require('passport-twitter').Strategy;
var mode = require('./model');
var config = require('./config');

User = mongoose.model('User');

var User = mongoose.model('User');

passport.use(new TwitterStrategy({
consumerKey: config.consumer_key,
consumerSecret: config.consumer_secret,
callbackURL: config.cb_url
},
function(token, tokenSecret, profile, done) {
User.findOne({uid: profile.id}, function(err, user) {
if(user) {
done(null, user);
} else {
var user = new User();
user.provider = "twitter";
user.uid = profile.id;
user.name = profile.displayName;
user.image = profile._json.profile_image_url;
user.save(function(err) {
if(err) { throw err; }
done(null, user);
});
}
})
}
));

passport.serializeUser(function(user, done) {
done(null, user.uid);
});

passport.deserializeUser(function(uid, done) {
User.findOne({uid: uid}, function (err, user) {
done(err, user);
});
});
17 changes: 17 additions & 0 deletions model.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
* Model Module: Mongoose: MongoDB ODM.
*/

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var UserSchema = new Schema({
provider: String,
uid: String,
name: String,
image: String,
created: {type: Date, default: Date.now}
});


mongoose.model('User',UserSchema);
7 changes: 6 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
},
"dependencies": {
"express": "3.3.6",
"jade": "*"
"jade": "*",
"mongoose": "^3.8.20",
"ntwitter": "^0.5.0",
"passport": "^0.2.1",
"passport-twitter": "^1.0.2",
"socket.io": "^1.2.1"
}
}
28 changes: 26 additions & 2 deletions routes/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,32 @@

/*
* GET home page.
* Das Routes.
*/

exports.index = function(req, res){
res.render('index', { title: 'MMODM' });
res.render('index', { title: 'MMODM', user: req.user });
};

exports.logout = function(req, res){
req.logout();
res.redirect('/');
}

exports.auth_cb = function(req, res) {
res.redirect('/');
}

exports.auth = function(req, res){
// The request will be redirected to Twitter for authentication, so this
// function will not be called.
}

exports.tweet = function(req, res){
twit.verifyCredentials(function (err, data) {
})
.updateStatus("#"+req.params.msg+" "+ new Date().getTime(),
function (err, data) {
res.send(200);
}
);
}

0 comments on commit 2d46612

Please sign in to comment.