Added "Compose New Tweet" form on Twitter API demo

This commit is contained in:
Sahat Yalkabov
2014-05-29 18:29:16 -04:00
parent dcff72cb82
commit 0f3eb15d72
3 changed files with 46 additions and 1 deletions

2
app.js
View File

@ -129,6 +129,7 @@ app.post('/account/profile', passportConf.isAuthenticated, userController.postUp
app.post('/account/password', passportConf.isAuthenticated, userController.postUpdatePassword); app.post('/account/password', passportConf.isAuthenticated, userController.postUpdatePassword);
app.post('/account/delete', passportConf.isAuthenticated, userController.postDeleteAccount); app.post('/account/delete', passportConf.isAuthenticated, userController.postDeleteAccount);
app.get('/account/unlink/:provider', passportConf.isAuthenticated, userController.getOauthUnlink); app.get('/account/unlink/:provider', passportConf.isAuthenticated, userController.getOauthUnlink);
app.get('/api', apiController.getApi); app.get('/api', apiController.getApi);
app.get('/api/lastfm', apiController.getLastfm); app.get('/api/lastfm', apiController.getLastfm);
app.get('/api/nyt', apiController.getNewYorkTimes); app.get('/api/nyt', apiController.getNewYorkTimes);
@ -146,6 +147,7 @@ app.get('/api/tumblr', passportConf.isAuthenticated, passportConf.isAuthorized,
app.get('/api/facebook', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.getFacebook); app.get('/api/facebook', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.getFacebook);
app.get('/api/github', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.getGithub); app.get('/api/github', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.getGithub);
app.get('/api/twitter', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.getTwitter); app.get('/api/twitter', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.getTwitter);
app.post('/api/twitter', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.postTwitter);
app.get('/api/venmo', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.getVenmo); app.get('/api/venmo', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.getVenmo);
app.post('/api/venmo', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.postVenmo); app.post('/api/venmo', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.postVenmo);
app.get('/api/linkedin', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.getLinkedin); app.get('/api/linkedin', passportConf.isAuthenticated, passportConf.isAuthorized, apiController.getLinkedin);

View File

@ -262,6 +262,29 @@ exports.getTwitter = function(req, res, next) {
}); });
}; };
exports.postTwitter = function(req, res, next) {
req.assert('tweet', 'Tweet cannot be empty.').notEmpty();
var errors = req.validationErrors();
if (errors) {
req.flash('errors', errors);
return res.redirect('/api/twitter');
}
var token = _.findWhere(req.user.tokens, { kind: 'twitter' });
var T = new Twit({
consumer_key: secrets.twitter.consumerKey,
consumer_secret: secrets.twitter.consumerSecret,
access_token: token.accessToken,
access_token_secret: token.tokenSecret
});
T.post('statuses/update', { status: req.body.tweet }, function(err, data, response) {
req.flash('success', { msg: 'Tweet has been posted.'});
res.redirect('/api/twitter');
});
};
/** /**
* GET /api/steam * GET /api/steam
* Steam API example. * Steam API example.

View File

@ -18,7 +18,27 @@ block content
| API Endpoints | API Endpoints
br br
.lead Latest #{tweets.length} Tweets containing the term "nodejs" in NYC within 5 miles radius
.well
h4 Compose new Tweet
form(role='form', method='POST')
input(type='hidden', name='_csrf', value=_csrf)
.form-group
input.form-control(type='text', name='tweet', autofocus)
p.help-block This new Tweet will be posted on your Twitter profile.
button.btn.btn-primary(type='submit')
i.fa.fa-twitter
| Tweet
br
.lead Latest
strong #{tweets.length}
| Tweets containing the term
strong nodejs
| in NYC within
strong 5
| miles radius
ul.media-list ul.media-list
for tweet in tweets for tweet in tweets