├── .gitignore ├── README.md └── server.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .DS_Store 3 | twitter_properties.json -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | backend for gmoeck's [twitter-browser](https://github.com/gmoeck/twitter_browser) written in nodejs 2 | 3 | ### Installation 4 | 5 | * install [node.js](http://nodejs.org) 6 | 7 | 8 | 9 | * add node.js dependencies 10 | 11 | 12 | npm install express 13 | npm install twitter 14 | npm install cookies 15 | 16 | 17 | * clone this repo 18 | 19 | 20 | git clone git@github.com:pangratz/twitter_browser_backend_nodejs.git 21 | cd twitter_browser_backend_nodejs 22 | 23 | 24 | * run server 25 | 26 | 27 | node server.js -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var sys = require('sys'); 3 | var Twitter = require('twitter'); 4 | var app = require('express').createServer(); 5 | 6 | var twitter = new Twitter(); 7 | 8 | var cache = {}; 9 | 10 | app.get('/user/:userName', function(req, res){ 11 | var user = cache[ req.params.userName ]; 12 | if (user){ 13 | sys.puts('got from cache'); 14 | res.send(user); 15 | return; 16 | } 17 | 18 | user = {}; 19 | twitter.get('/users/show.json', {include_entities: true, screen_name: req.params.userName}, function(userData) { 20 | 21 | user.userName = userData.screen_name; 22 | user.fullName = userData.name; 23 | user.guid = userData.id; 24 | user.location = userData.location; 25 | user.bio = userData.description; 26 | user.profileImageUrl = userData.profile_image_url; 27 | user.tweetCount = userData.statuses_count; 28 | user.followersCount = userData.followers_count; 29 | user.followingCount = userData.friends_count; 30 | 31 | twitter.get('/statuses/user_timeline.json', {screen_name: req.params.userName, count: 100, trim_user: true, include_rts: false}, function(tweetsData){ 32 | user.tweets = tweetsData; 33 | 34 | // add to cache 35 | cache[ user.userName ] = user; 36 | 37 | res.send(user); 38 | }); 39 | }); 40 | }); 41 | 42 | app.listen(3000); --------------------------------------------------------------------------------