deadprogrammer-twitter 0.6.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/History +186 -0
  2. data/License +20 -0
  3. data/Notes +33 -0
  4. data/README.rdoc +13 -0
  5. data/Rakefile +103 -0
  6. data/VERSION.yml +4 -0
  7. data/examples/connect.rb +30 -0
  8. data/examples/friendship_existance.rb +13 -0
  9. data/examples/helpers/config_store.rb +38 -0
  10. data/examples/httpauth.rb +11 -0
  11. data/examples/ids.rb +13 -0
  12. data/examples/search.rb +15 -0
  13. data/examples/timeline.rb +19 -0
  14. data/examples/unauthorized.rb +16 -0
  15. data/examples/update.rb +11 -0
  16. data/examples/user.rb +5 -0
  17. data/lib/twitter/base.rb +165 -0
  18. data/lib/twitter/httpauth.rb +27 -0
  19. data/lib/twitter/oauth.rb +34 -0
  20. data/lib/twitter/request.rb +102 -0
  21. data/lib/twitter/search.rb +106 -0
  22. data/lib/twitter/trends.rb +19 -0
  23. data/lib/twitter.rb +64 -0
  24. data/test/fixtures/firehose.json +1 -0
  25. data/test/fixtures/follower_ids.json +1 -0
  26. data/test/fixtures/friend_ids.json +1 -0
  27. data/test/fixtures/friends_timeline.json +1 -0
  28. data/test/fixtures/rate_limit_exceeded.json +1 -0
  29. data/test/fixtures/replies.json +1 -0
  30. data/test/fixtures/search.json +1 -0
  31. data/test/fixtures/search_from_jnunemaker.json +1 -0
  32. data/test/fixtures/status.json +1 -0
  33. data/test/fixtures/status_show.json +1 -0
  34. data/test/fixtures/trends.json +1 -0
  35. data/test/fixtures/user.json +1 -0
  36. data/test/fixtures/user_timeline.json +1 -0
  37. data/test/test_helper.rb +36 -0
  38. data/test/twitter/base_test.rb +95 -0
  39. data/test/twitter/httpauth_test.rb +70 -0
  40. data/test/twitter/oauth_test.rb +71 -0
  41. data/test/twitter/request_test.rb +217 -0
  42. data/test/twitter/search_test.rb +144 -0
  43. data/test/twitter/trends_test.rb +21 -0
  44. data/test/twitter_test.rb +38 -0
  45. metadata +192 -0
@@ -0,0 +1,19 @@
1
+ module Twitter
2
+ class Trends
3
+ include HTTParty
4
+ include Enumerable
5
+
6
+ attr_reader :result
7
+
8
+ def fetch
9
+ response = self.class.get('http://search.twitter.com/trends.json', :format => :json)
10
+ @fetch = Mash.new(response)
11
+ @fetch
12
+ end
13
+
14
+ def each
15
+ fetch()['trends'].each { |r| yield r }
16
+ end
17
+
18
+ end
19
+ end
data/lib/twitter.rb ADDED
@@ -0,0 +1,64 @@
1
+ require 'forwardable'
2
+ require 'rubygems'
3
+
4
+ gem 'oauth', '0.3.2'
5
+ require 'oauth'
6
+
7
+ gem 'mash', '0.0.3'
8
+ require 'mash'
9
+
10
+ gem 'httparty', '0.4.2'
11
+ require 'httparty'
12
+
13
+ module Twitter
14
+ class TwitterError < StandardError
15
+ attr_reader :data
16
+
17
+ def initialize(data)
18
+ @data = data
19
+ super
20
+ end
21
+ end
22
+
23
+ class RateLimitExceeded < TwitterError; end
24
+ class Unauthorized < TwitterError; end
25
+ class General < TwitterError; end
26
+
27
+ class Unavailable < StandardError; end
28
+ class InformTwitter < StandardError; end
29
+ class NotFound < StandardError; end
30
+
31
+
32
+ def self.firehose
33
+ response = HTTParty.get('http://twitter.com/statuses/public_timeline.json', :format => :json)
34
+ response.map { |tweet| Mash.new(tweet) }
35
+ end
36
+
37
+ def self.user(id)
38
+ response = HTTParty.get("http://twitter.com/users/show/#{id}.json", :format => :json)
39
+ Mash.new(response)
40
+ end
41
+
42
+ def self.status(id)
43
+ response = HTTParty.get("http://twitter.com/statuses/show/#{id}.json", :format => :json)
44
+ Mash.new(response)
45
+ end
46
+
47
+ def self.friend_ids(id)
48
+ HTTParty.get("http://twitter.com/friends/ids/#{id}.json", :format => :json)
49
+ end
50
+
51
+ def self.follower_ids(id)
52
+ HTTParty.get("http://twitter.com/followers/ids/#{id}.json", :format => :json)
53
+ end
54
+ end
55
+
56
+ directory = File.dirname(__FILE__)
57
+ $:.unshift(directory) unless $:.include?(directory)
58
+
59
+ require 'twitter/oauth'
60
+ require 'twitter/httpauth'
61
+ require 'twitter/request'
62
+ require 'twitter/base'
63
+ require 'twitter/search'
64
+ require 'twitter/trends'
@@ -0,0 +1 @@
1
+ [{"user":{"followers_count":74,"description":"This is a p2p torrent feed from various online torrent sources.","url":"","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Earth","screen_name":"P2P_Torrents","name":"P2P Torrents","id":27694960},"text":"#torrents Ultimativer Flirt Guide - In 10 Minuten jede Frau erobern: Ultimativer Flirt Guide - In 10 Mi.. http:\/\/tinyurl.com\/d3okh4","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:28 +0000 2009","source":"<a href=\"http:\/\/twitterfeed.com\">twitterfeed<\/a>","in_reply_to_status_id":null,"id":1447485843},{"user":{"followers_count":136860,"description":"I'm MO-RIS. Freestyle,Freeride,Freelife. MountainBike and BMX rider. My favorite Music is Jazz, Funk and Hip-Hop. Sorry, I use Japanese only.","url":"http:\/\/iddy.jp\/profile\/mo-ris\/","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Okazaki, Aichi, Japan","screen_name":"moooris","name":"MO-RiS \/ もーりす","id":14523894},"text":"@moccai はい、がんばってくださいねっ! [at Home]","truncated":false,"favorited":false,"in_reply_to_user_id":7796422,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"<a href=\"http:\/\/d.hatena.ne.jp\/Kiri_Feather\/20071121\">Tween<\/a>","in_reply_to_status_id":1447479571,"id":1447485827},{"user":{"followers_count":69,"description":"","url":"http:\/\/frosh.tumblr.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Mexico","screen_name":"fer_sure","name":"fer","id":13189472},"text":"Terminando de comer en casa de @isaak182","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485826},{"user":{"followers_count":296,"description":"Kevin Yarr, Web Journalist","url":"http:\/\/www.cbc.ca\/pei\/","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Charlottetown","screen_name":"CBCPEI","name":"CBC P.E.I.","id":18999995},"text":"UPDATE coming. Two of three deputies to return PNP money","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485825},{"user":{"followers_count":129,"description":"Heyy :)","url":"http:\/\/www.myspace.com\/smegzx","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"England","screen_name":"Megzx","name":"Megan.","id":23615322},"text":"\"I Will Break.., Into Your Thoughts.., With Whats Written On Myy Heart..\" (8) =)","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485823},{"user":{"followers_count":2,"description":"","url":"","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"fatherearth2011","name":"burt m","id":24932539},"text":"Has found his research for his PhD in plant biology. Evolution of floral color, watch out Cambridge.","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>","in_reply_to_status_id":null,"id":1447485820},{"user":{"followers_count":148,"description":"Director of Public Affairs, Minnesota House Republican Caucus","url":"http:\/\/www.mnhousegop.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"kwatt","name":"Kevin Watterson","id":9082192},"text":"It's all garbage to me. http:\/\/twitpic.com\/2rz8v","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:28 +0000 2009","source":"<a href=\"http:\/\/twitterfon.net\/\">TwitterFon<\/a>","in_reply_to_status_id":null,"id":1447485819},{"user":{"followers_count":1307,"description":"Wife, homeschool mom &amp; Arbonne Rep #15970532. I specialize in Arbonne's weightloss program. I can help you lose weight! Blog address: http:\/\/bit.ly\/zQnHH","url":"http:\/\/www.peggyalvarado.myarbonne.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"peggyalvarado","name":"Peggy Alvarado","id":21317064},"text":"Follow Friday! @thoughtcoach #followfriday","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485817},{"user":{"followers_count":24,"description":"I'm me.","url":"","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"Crazier_Me","name":"lisamaries.","id":24554902},"text":"@RiRi_Twin Wow. Once. Okay, whatever. Why can't you just calm down and get over it?? Or you wanna fight?!","truncated":false,"favorited":false,"in_reply_to_user_id":24706147,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"web","in_reply_to_status_id":1447471539,"id":1447485815},{"user":{"followers_count":24,"description":"I'm Steve. I like scary things, viddya games, and being a ninja. And Notorious Fluffy T","url":"http:\/\/www.myspace.com\/psychodboy","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Elkridge MD","screen_name":"ShinobiSteve","name":"Steve Hinz","id":20456870},"text":"@laylakayleigh I get my mom books or dvds or sweets usually. She's not open on things she wants when I ask.","truncated":false,"favorited":false,"in_reply_to_user_id":17349900,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"<a href=\"http:\/\/www.twhirl.org\/\">twhirl<\/a>","in_reply_to_status_id":1447448955,"id":1447485813},{"user":{"followers_count":49,"description":"i AM UNiQUE iN MY OWN WAY!! i AM A liVING WALKiNG BARBi3..i SET MORE THAN TRENDS.i iNSPiRE...","url":"","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"cottage grove, mn","screen_name":"AD3OLA","name":"Adeola Gbadebo","id":26118515},"text":"i don't see myself as concided..i am just confident and i carry myself high.. i mean is that concided..damnnn there is a difference there..","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485811},{"user":{"followers_count":659,"description":"An advertising\/social media\/interactive junkie who lives on the 'net","url":"http:\/\/www.brentter.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Atlanta, GA","screen_name":"brentter","name":"Brent Terrazas","id":6426682},"text":"@stuntdubl http:\/\/seopro.com.au\/free-seo-tools\/new\/link-checker\/ and http:\/\/seoanalytic.com\/tools\/internal_pagerank_checker\/","truncated":false,"favorited":false,"in_reply_to_user_id":1359731,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"web","in_reply_to_status_id":1447477924,"id":1447485810},{"user":{"followers_count":10,"description":"Match Results from The Blue Alliance. More at @thebluealliance and http:\/\/www.thebluealliance.net","url":"http:\/\/www.thebluealliance.net","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"TBAMatchResults","name":"TBA Match Results","id":27573276},"text":"2518, 2052, 3082 lost to 2498, 2529, 2574 [46 to 73] in Qualifications 44 at Minnesota 10000 Lakes Regional","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485809},{"user":{"followers_count":431,"description":"I am living well and learning every day. I am a marketer who founded Ciena's community initiative and I help them find success with all their web initiatives.","url":"http:\/\/www.ciena.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Massachusetts","screen_name":"NaomiMarr","name":"Naomi Marr","id":14419908},"text":"RT @coryereed: Check out video from visit earlier this week at @Ciena Innovation Lab. http:\/\/bit.ly\/84DJ5 (Sorry, no @britneyspears cameos)","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"<a href=\"http:\/\/www.tweetdeck.com\/\">TweetDeck<\/a>","in_reply_to_status_id":null,"id":1447485808},{"user":{"followers_count":34,"description":"","url":"","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"Lilwildgirlrawr","name":"Lizzie is da name","id":20962388},"text":"Dis qurl is sinqle iqht here! Ohh yeah man...Flirtinq is qonna start toniqht at da partay&lt;3","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485807},{"user":{"followers_count":0,"description":null,"url":null,"profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":null,"screen_name":"elliethomasbubz","name":"ellie thomas","id":28426326},"text":"waitinf for the video :)","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485806},{"user":{"followers_count":427,"description":"Restaurant Recruiter \/ Industry Blogger \/ LifeChurch.tv partner","url":"http:\/\/www.restaurantmanagerresources.blogspot.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Oklahoma City, OK","screen_name":"headhunterbrian","name":"Brian Bruce","id":15346984},"text":"@sunnythomas Dave Ramsey rocks! We're debt free but for the house thanks in large part to him.","truncated":false,"favorited":false,"in_reply_to_user_id":14160713,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":1447461266,"id":1447485805},{"user":{"followers_count":469,"description":"Christian. Student. Filmmaker. Daydreamer. Real dude. OBSESSED w\/ EVERYTHING 80'S-90'S!!! Allergic to fake.","url":"http:\/\/www.myspace.com\/itsboywonder","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Orange County, Cali","screen_name":"Hollywood_Trey","name":"Trumaine Smith","id":23739806},"text":"@jenskiii About what?","truncated":false,"favorited":false,"in_reply_to_user_id":18823582,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":1447473524,"id":1447485804},{"user":{"followers_count":220,"description":"Azz Monkey Clothing is a premium clothing brand offering the very best in urban lifestyle, skateboard, and snowboard apparel.","url":"http:\/\/www.azzmonkey.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"SnowDirtWaterSidewalkStreets","screen_name":"azzmonkey","name":"Azz Monkey Clothing","id":17183594},"text":"How are enjoying the new digs?","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>","in_reply_to_status_id":null,"id":1447485803},{"user":{"followers_count":13,"description":null,"url":null,"profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":null,"screen_name":"ljross","name":"Liam Ross","id":20691904},"text":"Don't understand the need for suicidal thoughts to include murder, too. For instance, in Binghamton. http:\/\/tinyurl.com\/crrg3c","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485799}]
@@ -0,0 +1 @@
1
+ [613,12796,12938,5765,13518,15323,8906,453593,598503,629603,628623,713263,697893,646123,720583,754990,755264,702653,611823,792399,12606,1226011,969631,3038211,2396591,5594932,5891052,5493662,768288,6247142,6609302,6833532,5104571,3672651,19413,7174582,6991162,6806472,6426602,10718,7430672,8396042,1182631,8597622,6845342,8883422,6816462,702613,1156261,9241962,9264222,6738932,9292132,8882412,5784962,79283,9767172,6996312,654653,9864902,8140482,9907312,6469542,874,9885102,1993721,6466022,8616122,7671872,10477902,723873,7821622,9874262,10845072,763224,5803002,12543,10452452,11094492,10560,12661,12741,75413,1714531,779169,13229,3560241,11485452,9733422,9573202,9870612,7152562,3576061,7574002,7808572,12081432,13346,10904502,9861982,482253,12235182,12223582,12515312,12251592,8407962,9255062,12728492,6141442,12750862,12488072,9291992,9390942,12084572,13156282,5790592,12412462,13510782,627303,1254261,616673,6368162,13706912,13782402,99723,12219102,56813,14070811,13826102,8766242,14090477,14094961,14096589,7019942,14099976,8293102,14119520,1328941,14051749,7508082,8095722,10193732,1307011,12707,12156682,6123982,14178038,10824762,11040972,13908992,14199456,10486382,13726052,11562312,6556972,14166387,14227633,3148,4513781,9548262,5840792,14257836,14055920,14262452,659933,10767782,14287223,14288480,652313,637763,66983,7462822,4448101,14332039,12579382,14332997,14287820,8033832,127583,14122477,816954,2477051,14302268,14206126,14378107,7879442,14328574,3628081,14398763,14162251,14377330,14010712,9468052,14221051,14409089,13955252,12681842,937561,14427863,14466143,14062005,14470429,14450143,13499872,14076758,14527633,14234012,960021,14380090,14073831,780561,14563161,14563260,9462972,14590521,1140261,12906952,6836402,1019951,5977,14361042,14588083,10967052,14169810,5462572,14687070,2898661,11946,14676814,14220413,11380312,14655491,7163912,38353,15403,14776551,14789853,14900453,5531452,14250972,5167141,14712637,14886813,14423603,14771453,12982472,14946593,14777840,8494682,1175831,14936183,14415989,2058881,6474562,14984654,13722,14169869,12478292,5467712,586803,10085192,14345945,6651022,8748292,14999286,9929452,1104891,785975,14706300,15033995,9100012,6221832,14140936,14942738,15094584,12350092,15114739,14351457,14798512,15126780,3283321,14073810,9764082,14259623,10733192,1152571,14899320,14367500,14128132,14911154,9371582,8922,15273534,14156043,1768041,15242061,14009722,13108342,75603,15264105,14740219,7758072,15028397,819302,15348010,752673,14543058,1274141,3185531,6306542,13108322,12686592,15375222,15430874,14424415,15352422,14317036,2019081,15491618,15024280,15464324,14168885,808074,15465686,12892292,10037622,15104784,15638865,12093512,14412322,14292165,10572372,12591,14803076,1243511,13971202,5504782,14649039,645353,5743852,13357,15095182,14469207,1585,7606742,790038,2006261,755028,10089142,12885682,15809772,15796373,15845499,15527007,15468368,14802005,15432802,5483162,8409072,1705591,15142405,4670021,14689610,9572062,12601,1000841,14713941,16002464,7219322,14292285,13353212,16143088,16152707,9866922,14205289,16199846,16233822,13602072,15657520,754747,7475362,15040976,50213,12500052,7152,16200523,9741672,16455427,9980812,14590839,14946654,15151626,16381951,16590772,1566201,16568594,16605678,7372912,638323,5715642,16103569,4632211,6446182,15820948,6778152,16661360,14366390,11889272,8070462,65273,14994463,16692958,627033,3732061,10633482,14380132,14943451,12468852,16828265,14402895,5099921,16885851,14675469,16697903,2900941,14451461,1496591,6164712,15778099,14191988,14431413,14182540,15783687,13856062,3791401,15424241,5206801,8905562,10073922,785340,756264,17009966,9723312,17058191,15768409,1676,15770176,14246143,16664183,823615,16987638,15754496,17100288,16011929,5576742,16876792,5815992,7605802,17134532,16033573,15518671,17200223,16918853,6082492,845611,16220947,16734204,6967822,5748162,5812572,16941853,10527202,1004071,10293122,3123671,17188350,17127839,813198,15690398,15377515,14402837,15353105,9492192,15839304,11589532,14816455,17331141,10879162,14116750,11088,15615165,15827231,16493323,6144652,17489546,14541533,17502272,728893,14365840,17503660,15239784,6525062,6148812,9887162,40863,16950740,14642335,14575376,14100886,17477873,14404318,16981333,14957975,10261302,17655861,17365218,3175171,15747123,6915102,7356622,16604035,17428418,14651825,15896029,16577001,1372651,15005954,14265787,14879573,15386336,17816690,16425887,17834170,16684812,149083,17862753,792632,14193132,6051562,17904110,9380652,14381877,2983251,5643432,16205983,14189032,389153,16211186,8126672,15085140,15585336,14223716,14071467,17870682,14409240,17987541,18001148,17985989,15442984,9695352,7939892,18050862,17481197,7617722,14198590,7935042,17037553,6817252,17378007,17938529,14339150,18149901,1684601,6279162,15846853,35953,14384158,9523302,18173702,10319902,14582075,16531891,12357582,18210267,18043449,4584551,774234,16893238,18222267,18222794,15848007,7858242,15948895,18227971,18128544,16472254,17823286,8233892,12581032,799194,33493,785875,12087292,16064905,15012307,14212434,17146581,670653,13999762,17034483,7948072,9700282,766652,16271041,9237312,15454740,6309042,9532132,15701745,14810774,10456332,808549,6154882,12241342,14486918,14606633,11603,9439332,17052841,14512472,14848368,16826149,16831553,13332232,9407382,49873,11115922,14099654,7776092,15868801,12669172,14046670,15196200,15395778,16739253,1663751,2355631,1277191,3659691,18333815,16112732,18353799,16039614,18250230,18073179,18332874,18214919,4628831,16547430,17586908,18413162,7278032,10832,17725290,1388321,1761301,14768495,17136292,14914403,15595306,6466912,2531521,14422605,828881,10255262,735053,57753,17232987,16798806,11923112,17988073,18044614,12436422,13439,17905573,18483916,17537056,15797213,18470553,18529984,643463,18571972,18575796,18594356,18607270,5218641,13560862,14974634,14464047,17999470,625943,14474670,18526656,14273725,14579367,14803587,18173533,17643364,10415882,809693,15558320,18674931,7018532,9360872,16481323,10286,6258202,10075872,893111,14093286,5533332,2550611,17009251,14281860,14641005,6730622,16452903,2738011,7839552,18597832,18700008,15905871,5933482,16840273,16736196,12321122,12270222,18833825,18834036,18332117,2883681,15697354,18852714,722103,16859405,18669941,668523,2049071,18879392,18631418,814580,16751180,18927092,17236341,18936955,18936577,10423432,17005083,18483113,15776217,15683541,14952014,18913504,6087472,1505961,18016189,18598615,14335551,17658632,18658388,14234004,2778231,8910282,15609931,14247987,649823,18883909,14281405,10324882,9675652,15320102,17498367,18390929,15315836,12474212,9988852,19158240,16419355,183813,15257407,14297166,19113783,16440108,12743592,18664783,9453872,16204699,15020118,14345587,780429,5969702,7219042,14948485,17620522,14671169,16680410,19353133,17994112,17429908,14908912,19600123,18170649,14748148,14571331,17229194,5457352,48773,19679367,9397012,15382766,16343513,14911144,17395851,15533248,17076389,9358602,16406528,18099640,17767547,19670419,18096662,17822704,14293292,6893792,53533,19795241,18110885,19810631,19827904,17558167,5117751,15638508,14926752,14149756,19634908,4468761,14567574,19948841,19954092,11835742,19938151,18423380,15904774,17560204,15074377,19231436,14165452,14469692,19036617,18807589,19788955,4080231,12920142,15399430,19578455,19482274,16996285,16259172,17667997,15203555,18214599,18781842,16621912,15479835,2202971,14410783,19736005,15135447,20163695,900601,6823692,292343,20131136,16808303,19978953,19547434,1089691,15871043,18809171,20609277,3560581,17432169,19691213,18098007,15417592,17833536,15177003,14381339,14194819,15407324,16731023,17149004,18491112,13972462,12370632,20067154,19073088,14127807,20553221,15107495,19851613,19870989,20420301,20681696,2148071,20100721,14633348,5573992,20705043,635793,10785892,20402565,14565733,20098787,20021607,15874552,20729126,21181647,18180272,14978802,18323749,7140702,18178441,21310249,15751895,5447882,19711370,18478757,2819,21278339,15442621,16301737,15070016,21320738,8348382,18600952,13770172,1649221,18360116,18276818,19900631,21379159,19935253,18737620,15195247,14658472,364,6813682,13074,1623,15000151,16912019,15235415,14101380,16599558,19037300,12687402,16889733,857501,19821374,1092621,21683201,20758237,12981172,19781549,20222971,15389148,12226202,14875570,17892372,5502392,843551,21804545,15723434,18391040,19292759,3286561,774060,14796100,12099752,18787589,13959242,10275892,629743,18234697,2230561,22072861,18670512,18820221,22300190,22340666,18216320,22400526,22431378,20899175,6330782,16883585,15935078,1364461,6179812,20589092,22508751,16933064,13183022,9808812,21062351,18381622,17183132,19018761,15899431,16188278,5661552,173813,15533585,22744648,22068050,22780485,20782318,60173,65583,22251010,21407715,5847082,18577007,15213923,22648234,18891726,15348242,2221741,19762959,17073317,22391658,19507837,17938747,5490442,22602883,20118508,13015632,19587710,15408479,23344603,17151343,14675249,15503518,22568737,18430448,18427032,23545306,23573979,7876602,11844,23221906,19193268,21311227,21634137,15458901,14714195,17788144,16927093,17450808,23713422,16467378,18642131,717233,10936152,23482614,19608005,23783966,19041419,13649,21328766,21203364,24187338,21884359,17192822,22128553,24257748,22132860,8868052,17879103,22593469,24204485,14660636,20857214,23501805,24347906,24567825,22294133,20089217,14262730,20987428,18588717,9922002,21980551,11905432,15492087,17067434,24851973,24677391,16822505,15917082,22224252,23923379,19288013,18402842,8274972,25121859,24833951,24888158,25241640,22232760,18893301,15644361,2633481,22660688,24562858,18755300,23567427,25566300,25569710,14464510,25745097,23751200,25817409,25259149,24622977,16401257,14882304,25771412,19388022,21922054,25542506,25599456,25782929,24801749,25538391,16651984,17834535,26040534,753973,26297795,15605658,16823020,19956062,16794261,13422802,26779699,21743486,14319649,25535757,26931958,26579479,7124752,25059528,3054021,25692022,8328752,17911850,15441990,6660852,17012066,27389560,25564238,22783131,27494001,27458253,7362512,21980433,14397705,18152191,14737211,44883,27809050,12125972,15558717,27838986,27117081,16651813,21723920,27862035,14452237,27406847,18630290,15344521,24496939,22762300,14879654,25107835,7888382,1011261,15518890,17487435,14131856,28279311,12384042,21721761,12480492,28532385,21380989,28468396,28504645,15919836,28793082,28816818,5857812,19498371,28912805,28956077,26423794,22239593,18425965,25147645,26723451,1087421,14212679,29380265,29398462,770952,22916479,20017276,19534762,10316422,936161,25097218,5538522,16344576,2819741,30440861,30514010,29775532,2071301,27839741,28711633,28210955,29374100,31023933,14798962,24529511,28983323,31438725,22543443,3636011,15376537]
@@ -0,0 +1 @@
1
+ [15323,12796,18713,697893,598503,13518,12938,10718,616163,8906,713263,792399,246,780561,658343,3038211,790205,46413,7124752,3672651,1182631,8883422,9264222,6738932,9907312,9885102,717233,5784962,12661,75413,779169,12543,9241962,12741,6186692,12707,38353,5502392,1714531,3560241,11485452,761613,10193732,482253,12235182,6141442,8028152,627303,13782402,13826102,14094961,14096589,14119520,20,14257836,14262452,8616122,14288480,1768041,14763,12196,14122477,1140261,6707392,654653,937561,33493,9929452,5877822,14246143,14561327,3191321,6927562,12591,615403,9941002,12047992,15403,676573,8494682,9887162,2058881,5444392,127583,14973933,15033995,14351457,14740219,613,819302,752673,25993,808074,14482752,11132462,13108342,2006261,16143088,9572062,14398763,10486382,56813,12081432,13108322,13722,6474562,2049071,4037,9980812,14080083,14372143,8033832,16623244,16623407,13560862,12081692,65273,624683,16828397,16893238,14380132,784171,54793,6082492,6556972,17058191,11294,15005954,6967822,845611,13856062,14994463,15432802,1104891,7846,5812572,17311462,6446182,792632,14365840,18222794,18227971,14345587,15948437,657863,17889970,17667997,18660239,17461978,3286561,5391882,19058681,11718,22391658,14522546,17919972,25745097,19483147,13334762,16373523,20017276]
@@ -0,0 +1 @@
1
+ [{"in_reply_to_screen_name":null,"user":{"profile_sidebar_border_color":"181A1E","description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"friends_count":161,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"notifications":false,"profile_background_color":"1A1B1F","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","profile_background_tile":false,"profile_text_color":"666666","followers_count":1231,"protected":false,"favourites_count":73,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_link_color":"2FC2EF","statuses_count":4664,"profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif"},"text":"Rob Dyrdek is the funniest man alive. That is all.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 22:57:00 +0000 2009","favorited":false,"id":1441588944,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"favorited":false,"user":{"profile_sidebar_fill_color":"252429","description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"profile_sidebar_border_color":"181A1E","followers_count":1228,"following":true,"notifications":false,"profile_background_tile":false,"friends_count":161,"time_zone":"Indiana (East)","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","favourites_count":73,"profile_background_color":"1A1B1F","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","screen_name":"jnunemaker","statuses_count":4663,"profile_link_color":"2FC2EF","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006"},"text":"Dang, forgot about CAN http:\/\/calendaraboutnothing.com\/~jnunemaker yesterday and broke my streak of 5 days in a row.","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1438916463,"in_reply_to_user_id":null,"source":"web","created_at":"Thu Apr 02 15:24:17 +0000 2009"},{"in_reply_to_screen_name":null,"user":{"friends_count":161,"profile_background_color":"1A1B1F","description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_text_color":"666666","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_link_color":"2FC2EF","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","protected":false,"statuses_count":4660,"profile_sidebar_fill_color":"252429","notifications":false,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_border_color":"181A1E","followers_count":1228,"profile_background_tile":false,"location":"Mishawaka, Indiana","id":4243},"text":"@kebabsylan yes. I'll be there at noon.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 14:38:03 +0000 2009","favorited":false,"id":1438637063,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>"},{"in_reply_to_screen_name":null,"user":{"notifications":false,"profile_background_tile":false,"friends_count":161,"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_background_color":"1A1B1F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4659,"protected":false,"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E","followers_count":1228},"text":"http:\/\/twitpic.com\/2pwjy - The books I'm reading right now. Wish I had more time.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 14:34:10 +0000 2009","favorited":false,"id":1438613754,"source":"<a href=\"http:\/\/twitpic.com\/\">TwitPic<\/a>"},{"favorited":false,"user":{"statuses_count":4658,"profile_background_color":"1A1B1F","description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"followers_count":1226,"profile_text_color":"666666","following":true,"favourites_count":72,"time_zone":"Indiana (East)","profile_link_color":"2FC2EF","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","notifications":false,"profile_sidebar_fill_color":"252429","friends_count":161,"screen_name":"jnunemaker","profile_sidebar_border_color":"181A1E","profile_background_tile":false,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006"},"text":"Reading a couple hokey named books of late, but really enjoying them. \"I Will Teach You To Be Rich\" and \"Get Anyone To Do Anything\".","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1436286949,"in_reply_to_user_id":null,"source":"web","created_at":"Thu Apr 02 03:52:02 +0000 2009"},{"favorited":false,"user":{"profile_link_color":"2FC2EF","description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"profile_sidebar_fill_color":"252429","followers_count":1226,"following":true,"time_zone":"Indiana (East)","profile_sidebar_border_color":"181A1E","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","notifications":false,"profile_background_tile":false,"friends_count":161,"protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","favourites_count":72,"profile_background_color":"1A1B1F","screen_name":"jnunemaker","statuses_count":4657,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006"},"text":"Megan Joy turned into a train wreck tonight.","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1435963959,"in_reply_to_user_id":null,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>","created_at":"Thu Apr 02 02:51:01 +0000 2009"},{"in_reply_to_screen_name":null,"user":{"notifications":false,"profile_background_tile":false,"friends_count":161,"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_background_color":"1A1B1F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4656,"protected":false,"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E","followers_count":1226},"text":"Watching latest House. Cool idea.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 01:25:46 +0000 2009","favorited":false,"id":1435502494,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"in_reply_to_screen_name":null,"user":{"notifications":false,"profile_background_tile":false,"friends_count":179,"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_background_color":"1A1B1F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4650,"protected":false,"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E","followers_count":1226},"text":"Sat on a fat bob today. Want! http:\/\/tr.im\/i7ha Love the flat black. Wish I could get a used one for less money, but they are too new.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Wed Apr 01 23:16:13 +0000 2009","favorited":false,"id":1434842036,"source":"web"},{"truncated":false,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","location":"Mishawaka, Indiana","id":4243,"followers_count":1226,"screen_name":"jnunemaker"},"in_reply_to_status_id":null,"text":"Just test drove an Escape with @nunieswife and visited the Harley Store. Johnny want a Harley...BAD!","in_reply_to_user_id":null,"favorited":false,"created_at":"Wed Apr 01 22:31:04 +0000 2009","in_reply_to_screen_name":null,"id":1434591491,"source":"web"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1222,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"text":"I hope the Bears go after Jay Cutler.","favorited":false,"created_at":"Wed Apr 01 12:35:28 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"id":1431011290,"in_reply_to_status_id":null,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1216,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"text":"Bundled up HTTParty's JSON and XML parsers (ganked from Merb and Rails) into a separate gem for all to enjoy. http:\/\/tr.im\/i4rc","favorited":false,"created_at":"Wed Apr 01 04:30:10 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"id":1429401587,"in_reply_to_status_id":null,"source":"web"},{"truncated":false,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","location":"Mishawaka, Indiana","id":4243,"followers_count":1215,"screen_name":"jnunemaker"},"in_reply_to_status_id":null,"text":"Opened an ING savings account tonight. First step towards automating more of my finances.","in_reply_to_user_id":null,"favorited":false,"created_at":"Wed Apr 01 01:13:13 +0000 2009","in_reply_to_screen_name":null,"id":1428332783,"source":"<a href=\"http:\/\/loungeapp.com\">Lounge<\/a>"},{"in_reply_to_status_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"in_reply_to_user_id":null,"text":"Working from the ND bookstore.","created_at":"Tue Mar 31 19:19:44 +0000 2009","favorited":false,"in_reply_to_screen_name":null,"truncated":false,"id":1426346076,"source":"web"},{"in_reply_to_status_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","followers_count":1214,"location":"Mishawaka, Indiana","id":4243,"screen_name":"jnunemaker"},"text":"Wishes the slide screen on the iPhone had an api so he could put weather and ego app stats there.","in_reply_to_user_id":null,"favorited":false,"created_at":"Tue Mar 31 14:46:14 +0000 2009","in_reply_to_screen_name":null,"id":1424683964,"truncated":false,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"favorited":false,"text":"En route to @ebrackley's. We're going to a fondue murder mystery tonight. Who killed the fondue!","created_at":"Sun Mar 29 17:44:43 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1413049459,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"favorited":false,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","followers_count":1214,"url":"http:\/\/railstips.org\/about","name":"John Nunemaker","screen_name":"jnunemaker","protected":false,"location":"Mishawaka, Indiana","id":4243},"in_reply_to_screen_name":null,"text":"Added a sexy bar graph of the RailsTips archives in the footer. http:\/\/tr.im\/hWt5","created_at":"Sun Mar 29 06:09:54 +0000 2009","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"id":1411056131,"source":"web"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"favorited":false,"text":"Corn!!!","created_at":"Sun Mar 29 03:34:49 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1410528666,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"favorited":false,"text":"Famous Dave's was so tasty tonight. Had fun with @nunieswife, @orderedlist, @carrie, @oaknd1, @lizsmc1 and @catbrad. Dang lots of tweeps.","created_at":"Sun Mar 29 00:26:09 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1409709416,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"favorited":false,"text":"We told him he was making a big mistake and that he obviously didn't know who we are.","created_at":"Sat Mar 28 22:30:04 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1409188633,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"favorited":false,"text":"Just brainstormed next addition to @harmonyapp with @orderedlist. It is going to be awesome.","created_at":"Sat Mar 28 21:15:34 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1408861206,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"}]
@@ -0,0 +1 @@
1
+ {"error": "Rate limit exceeded"}
@@ -0,0 +1 @@
1
+ [{"favorited":false,"user":{"profile_link_color":"1DA9DE","description":"oAk is a designer who tweets, but not necessarily about design. I work at the University of Notre Dame.","utc_offset":-18000,"profile_sidebar_fill_color":"ebebeb","followers_count":208,"following":true,"time_zone":"Indiana (East)","profile_sidebar_border_color":"8f8f8f","url":"http:\/\/atimcalledoak.com","name":"-oAk-","notifications":false,"profile_background_tile":false,"friends_count":111,"protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/101535873\/avatarone_normal.png","favourites_count":214,"profile_background_color":"000000","screen_name":"oaknd1","statuses_count":3918,"profile_background_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_background_images\/3616500\/twitterblack.jpg","profile_text_color":"243d5b","location":"iPhone: 41.703415,-86.246094","id":3038211,"created_at":"Sat Mar 31 04:30:35 +0000 2007"},"text":"@jnunemaker cold out today. cold yesterday. even colder today.","in_reply_to_screen_name":"jnunemaker","truncated":false,"in_reply_to_status_id":null,"id":1446039519,"in_reply_to_user_id":4243,"source":"<a href=\"http:\/\/iconfactory.com\/software\/twitterrific\">twitterrific<\/a>","created_at":"Fri Apr 03 15:51:12 +0000 2009"},{"favorited":false,"user":{"description":"Web guy in the making. Design, coding, usability. Typography addict.","statuses_count":2412,"utc_offset":0,"profile_sidebar_fill_color":"f7f7f7","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme1\/bg.gif","following":false,"profile_sidebar_border_color":"ff0007","time_zone":"Lisbon","friends_count":391,"url":"http:\/\/paulozoom.com","name":"Paulo Pereira","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/64142495\/zoom2_normal.png","notifications":false,"profile_background_color":"f0f0f0","screen_name":"paulozoom","profile_background_tile":false,"profile_text_color":"000000","followers_count":350,"location":"Porto, Portugal","id":14452237,"favourites_count":8,"created_at":"Sun Apr 20 15:11:38 +0000 2008","profile_link_color":"ff0007"},"text":"@jnunemaker could you try to do HTTParty.get(\"http:\/\/digg.com\") ? I find myself waiting forever for the response. Posted a ticket on that.","in_reply_to_screen_name":"jnunemaker","truncated":false,"in_reply_to_status_id":null,"id":1445973779,"in_reply_to_user_id":4243,"source":"<a href=\"http:\/\/thecosmicmachine.com\/eventbox\/\">EventBox<\/a>","created_at":"Fri Apr 03 15:40:20 +0000 2009"},{"in_reply_to_screen_name":"jnunemaker","user":{"description":"just another ruby hacker","time_zone":"Eastern Time (US & Canada)","utc_offset":-18000,"profile_text_color":"663B12","followers_count":128,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/66571046\/john7_normal.jpg","following":false,"notifications":false,"profile_background_tile":false,"favourites_count":0,"profile_link_color":"1F98C7","url":"http:\/\/wiseheartdesign.com","screen_name":"johnwlong2000","name":"John W. Long","statuses_count":729,"profile_sidebar_fill_color":"DAECF4","protected":false,"created_at":"Fri Oct 26 02:45:58 +0000 2007","profile_sidebar_border_color":"C6E2EE","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme2\/bg.gif","friends_count":63,"location":"Cary, North Carolina","id":9700282,"profile_background_color":"C6E2EE"},"text":"@jnunemaker An unobtrusive Fancy Zoom image behavior for use with LowPro: http:\/\/gist.github.com\/89299","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":4243,"created_at":"Thu Apr 02 17:23:21 +0000 2009","favorited":false,"id":1439627059,"source":"<a href=\"http:\/\/iconfactory.com\/software\/twitterrific\">twitterrific<\/a>"},{"favorited":false,"user":{"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme1\/bg.gif","friends_count":390,"description":"Web guy in the making. Design, coding, usability. Typography addict.","utc_offset":0,"profile_sidebar_border_color":"ff0007","following":true,"time_zone":"Lisbon","profile_background_color":"f0f0f0","followers_count":350,"url":"http:\/\/paulozoom.com","name":"Paulo Pereira","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/64142495\/zoom2_normal.png","notifications":false,"profile_background_tile":false,"favourites_count":7,"profile_text_color":"000000","screen_name":"paulozoom","statuses_count":2365,"profile_link_color":"ff0007","location":"Porto, Portugal","id":14452237,"created_at":"Sun Apr 20 15:11:38 +0000 2008","profile_sidebar_fill_color":"f7f7f7"},"text":"@jnunemaker Trying to dominate the world, heh?","in_reply_to_screen_name":"jnunemaker","truncated":false,"in_reply_to_status_id":1438613754,"id":1438634711,"in_reply_to_user_id":4243,"source":"<a href=\"http:\/\/thecosmicmachine.com\/eventbox\/\">EventBox<\/a>","created_at":"Thu Apr 02 14:37:38 +0000 2009"},{"in_reply_to_screen_name":"jnunemaker","user":{"description":"me.awesomize()","time_zone":"Eastern Time (US & Canada)","utc_offset":-18000,"profile_sidebar_border_color":"87bc44","notifications":true,"profile_background_tile":false,"friends_count":24,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/51681870\/kebabdylan-32_normal.jpg","following":true,"favourites_count":0,"profile_background_color":"9ae4e8","url":null,"screen_name":"kebabdylan","name":"Jonathan","statuses_count":98,"protected":false,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme1\/bg.gif","profile_text_color":"000000","created_at":"Tue Mar 11 12:45:25 +0000 2008","profile_link_color":"0000ff","location":"","id":14122477,"profile_sidebar_fill_color":"e0ff92","followers_count":21},"text":"@jnunemaker la e today?","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":4243,"created_at":"Thu Apr 02 14:34:55 +0000 2009","favorited":false,"id":1438618345,"source":"<a href=\"http:\/\/iconfactory.com\/software\/twitterrific\">twitterrific<\/a>"},{"favorited":false,"user":{"profile_background_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_background_images\/4652948\/willie_grovey_collage.jpg","friends_count":717,"description":"Raccoon Willie is the most celebrated animal on the web... he's bigger than Shrek!!!","utc_offset":-25200,"profile_background_color":"9AE4E8","following":true,"time_zone":"Mountain Time (US & Canada)","profile_text_color":"333333","followers_count":371,"url":"http:\/\/www.youtube.com\/damygeebo","name":"Raccoon Willie","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/71327390\/wilcat_normal.jpg","notifications":false,"profile_background_tile":true,"favourites_count":0,"profile_link_color":"c81614","screen_name":"damygeebo","statuses_count":1401,"profile_sidebar_fill_color":"ebe3bc","location":"Midwest","id":19037300,"created_at":"Thu Jan 15 20:26:20 +0000 2009","profile_sidebar_border_color":"d0ba86"},"text":"@jnunemaker ...have you read \"Raccoon Willie: Dead Man\" yet?","in_reply_to_screen_name":"jnunemaker","truncated":false,"in_reply_to_status_id":1436286949,"id":1436292726,"in_reply_to_user_id":4243,"source":"web","created_at":"Thu Apr 02 03:53:16 +0000 2009"},{"in_reply_to_screen_name":"jnunemaker","user":{"notifications":false,"profile_background_tile":false,"friends_count":177,"description":"don't judge me by my crappy website","time_zone":"Pacific Time (US & Canada)","utc_offset":-28800,"favourites_count":18,"profile_background_color":"98AA5F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/14998572\/mike-sxsw07-56x56_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme1\/bg.gif","profile_text_color":"000000","url":"http:\/\/screenflicker.com\/mike\/","screen_name":"stickel","name":"Mike Stickel","statuses_count":6951,"protected":false,"profile_link_color":"0000ff","created_at":"Wed Nov 22 15:38:28 +0000 2006","profile_sidebar_fill_color":"FFF591","location":"San Francisco","id":15403,"profile_sidebar_border_color":"BCA944","followers_count":529},"text":"@jnunemaker Ouch. That sucks. I rode bitch know a sport bike but that was before I knew how to ride (that person taught me a bit).","truncated":false,"in_reply_to_status_id":1435431849,"in_reply_to_user_id":4243,"created_at":"Thu Apr 02 03:20:20 +0000 2009","favorited":false,"id":1436127953,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"in_reply_to_screen_name":"jnunemaker","user":{"notifications":false,"description":"Rails Machine CEO, DJ, Bird dog enthusiast","time_zone":"Eastern Time (US & Canada)","utc_offset":-18000,"profile_sidebar_border_color":"87bc44","profile_background_tile":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/56157945\/Photo_1_normal.jpg","following":true,"friends_count":104,"profile_background_color":"9ae4e8","url":"http:\/\/bradley.is","screen_name":"bradleyktaylor","name":"Bradley Taylor","protected":false,"favourites_count":0,"profile_text_color":"000000","created_at":"Thu Feb 21 18:50:49 +0000 2008","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme1\/bg.gif","profile_link_color":"0000ff","followers_count":142,"location":"Savannah, GA","id":13782402,"statuses_count":793,"profile_sidebar_fill_color":"e0ff92"},"text":"@jnunemaker thanks for the heads up. I'm mostly just using email as an api.","truncated":false,"in_reply_to_status_id":1435440065,"in_reply_to_user_id":4243,"created_at":"Thu Apr 02 01:18:18 +0000 2009","favorited":false,"id":1435461339,"source":"web"},{"favorited":false,"user":{"profile_sidebar_fill_color":"e0ff92","description":"http:\/\/iphoneonrails.com","utc_offset":-18000,"profile_sidebar_border_color":"87bc44","followers_count":287,"following":true,"notifications":false,"profile_background_tile":false,"friends_count":32,"time_zone":"Eastern Time (US & Canada)","url":"http:\/\/yfactorial.com","name":"Ryan Daigle","favourites_count":1,"profile_background_color":"9ae4e8","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/45111492\/ryan_vector_normal.png","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme1\/bg.gif","profile_text_color":"000000","screen_name":"rwdaigle","statuses_count":529,"profile_link_color":"0000ff","location":"iPhone: 35.778992,-78.842484","id":658343,"created_at":"Thu Jan 18 02:46:57 +0000 2007"},"text":"@jnunemaker don't do it man. Step away from the bike.","in_reply_to_screen_name":"jnunemaker","truncated":false,"in_reply_to_status_id":1434842036,"id":1435366505,"in_reply_to_user_id":4243,"source":"<a href=\"http:\/\/iconfactory.com\/software\/twitterrific\">twitterrific<\/a>","created_at":"Thu Apr 02 01:00:55 +0000 2009"},{"favorited":false,"user":{"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme1\/bg.gif","friends_count":177,"description":"don't judge me by my crappy website","utc_offset":-28800,"profile_background_color":"98AA5F","following":true,"time_zone":"Pacific Time (US & Canada)","profile_text_color":"000000","followers_count":527,"url":"http:\/\/screenflicker.com\/mike\/","name":"Mike Stickel","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/14998572\/mike-sxsw07-56x56_normal.jpg","notifications":false,"profile_background_tile":false,"favourites_count":18,"profile_link_color":"0000ff","screen_name":"stickel","statuses_count":6949,"profile_sidebar_fill_color":"FFF591","location":"San Francisco","id":15403,"created_at":"Wed Nov 22 15:38:28 +0000 2006","profile_sidebar_border_color":"BCA944"},"text":"@jnunemaker No? Why not? And which part wouldn't you wish on anyone?","in_reply_to_screen_name":"jnunemaker","truncated":false,"in_reply_to_status_id":null,"id":1435238296,"in_reply_to_user_id":4243,"source":"<a href=\"http:\/\/iconfactory.com\/software\/twitterrific\">twitterrific<\/a>","created_at":"Thu Apr 02 00:36:48 +0000 2009"},{"favorited":false,"user":{"profile_sidebar_fill_color":"FFF591","description":"don't judge me by my crappy website","utc_offset":-28800,"profile_sidebar_border_color":"BCA944","followers_count":527,"following":true,"notifications":false,"profile_background_tile":false,"friends_count":177,"time_zone":"Pacific Time (US & Canada)","url":"http:\/\/screenflicker.com\/mike\/","name":"Mike Stickel","favourites_count":18,"profile_background_color":"98AA5F","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/14998572\/mike-sxsw07-56x56_normal.jpg","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme1\/bg.gif","profile_text_color":"000000","screen_name":"stickel","statuses_count":6944,"profile_link_color":"0000ff","location":"San Francisco","id":15403,"created_at":"Wed Nov 22 15:38:28 +0000 2006"},"text":"@jnunemaker And they'd all cheer and buy us drinks the entire time we are there. It will be AWESOME! @orderedlist can ride bitch. :)","in_reply_to_screen_name":"jnunemaker","truncated":false,"in_reply_to_status_id":null,"id":1435063394,"in_reply_to_user_id":4243,"source":"<a href=\"http:\/\/iconfactory.com\/software\/twitterrific\">twitterrific<\/a>","created_at":"Wed Apr 01 23:58:39 +0000 2009"},{"in_reply_to_screen_name":"jnunemaker","user":{"description":"don't judge me by my crappy website","time_zone":"Pacific Time (US & Canada)","utc_offset":-28800,"profile_background_color":"98AA5F","followers_count":527,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/14998572\/mike-sxsw07-56x56_normal.jpg","following":true,"notifications":false,"profile_background_tile":false,"favourites_count":18,"profile_text_color":"000000","url":"http:\/\/screenflicker.com\/mike\/","screen_name":"stickel","name":"Mike Stickel","statuses_count":6943,"profile_link_color":"0000ff","protected":false,"created_at":"Wed Nov 22 15:38:28 +0000 2006","profile_sidebar_fill_color":"FFF591","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme1\/bg.gif","friends_count":177,"profile_sidebar_border_color":"BCA944","location":"San Francisco","id":15403},"text":"@jnunemaker I dunno. The V-ROD Muscle is pretty hot. http:\/\/moourl.com\/p0q99","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":4243,"created_at":"Wed Apr 01 23:36:31 +0000 2009","favorited":false,"id":1434948902,"source":"<a href=\"http:\/\/iconfactory.com\/software\/twitterrific\">twitterrific<\/a>"},{"truncated":false,"user":{"description":"don't judge me by my crappy website","url":"http:\/\/screenflicker.com\/mike\/","name":"Mike Stickel","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/14998572\/mike-sxsw07-56x56_normal.jpg","location":"San Francisco","id":15403,"followers_count":527,"screen_name":"stickel"},"in_reply_to_status_id":null,"text":"@jnunemaker Johnny should get a Harley. :D Then ride it to Sturgis with me one of these years. :)","in_reply_to_user_id":4243,"favorited":false,"created_at":"Wed Apr 01 22:51:20 +0000 2009","in_reply_to_screen_name":"jnunemaker","id":1434706104,"source":"<a href=\"http:\/\/iconfactory.com\/software\/twitterrific\">twitterrific<\/a>"},{"in_reply_to_user_id":4243,"user":{"description":"Researcher - eLearning and machine consciousness, community and identity","url":"http:\/\/brains.parslow.net","name":"PatParslow","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/53254225\/pat_normal.jpg","protected":false,"followers_count":292,"screen_name":"PatParslow","location":"Reading, UK","id":14512018},"text":"@jnunemaker http:\/\/twitter.rubyforge.org\/ down?","favorited":false,"created_at":"Wed Apr 01 20:22:38 +0000 2009","in_reply_to_screen_name":"jnunemaker","truncated":false,"id":1433804708,"in_reply_to_status_id":null,"source":"<a href=\"http:\/\/www.tweetdeck.com\/\">TweetDeck<\/a>"},{"truncated":false,"user":{"description":"Web guy in the making. Design, coding, usability. Typography addict.","url":"http:\/\/paulozoom.com","name":"Paulo Pereira","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/64142495\/zoom2_normal.png","location":"Porto, Portugal","id":14452237,"followers_count":349,"screen_name":"paulozoom"},"in_reply_to_status_id":null,"text":"@jnunemaker found the problem, it was an unset variable. sry","in_reply_to_user_id":4243,"favorited":false,"created_at":"Wed Apr 01 13:15:06 +0000 2009","in_reply_to_screen_name":"jnunemaker","id":1431202286,"source":"<a href=\"http:\/\/thecosmicmachine.com\/eventbox\/\">EventBox<\/a>"},{"in_reply_to_user_id":4243,"user":{"description":"Web guy in the making. Design, coding, usability. Typography addict.","url":"http:\/\/paulozoom.com","name":"Paulo Pereira","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/64142495\/zoom2_normal.png","protected":false,"followers_count":349,"screen_name":"paulozoom","location":"Porto, Portugal","id":14452237},"text":"@jnunemaker tks a lot for your feedback. also, can u check what's going on with httparty? doesn't work at all. http:\/\/bit.ly\/RTR5","favorited":false,"created_at":"Wed Apr 01 13:04:46 +0000 2009","in_reply_to_screen_name":"jnunemaker","truncated":false,"id":1431150482,"in_reply_to_status_id":1430926191,"source":"<a href=\"http:\/\/thecosmicmachine.com\/eventbox\/\">EventBox<\/a>"},{"in_reply_to_user_id":4243,"user":{"description":"Web developer for the University of Notre Dame","url":"http:\/\/weedygarden.net","name":"Erik Runyon","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/43767822\/Photo_5_normal.jpg","protected":false,"followers_count":65,"screen_name":"erunyon","location":"Michiana","id":9241962},"text":"@jnunemaker I think the Lions are looking at him... which is funny since they already have 5 or so QB's","favorited":false,"created_at":"Wed Apr 01 12:39:20 +0000 2009","in_reply_to_screen_name":"jnunemaker","truncated":false,"id":1431028594,"in_reply_to_status_id":1431011290,"source":"<a href=\"http:\/\/iconfactory.com\/software\/twitterrific\">twitterrific<\/a>"},{"truncated":false,"user":{"description":"Web guy in the making. Design, coding, usability. Typography addict.","url":"http:\/\/paulozoom.com","name":"Paulo Pereira","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/64142495\/zoom2_normal.png","location":"Porto, Portugal","id":14452237,"followers_count":348,"screen_name":"paulozoom"},"in_reply_to_status_id":null,"text":"@jnunemaker I've never tested any code, and I'm considering Rspec and Shoulda for both rails and non-rails code. Which one do you suggest?","in_reply_to_user_id":4243,"favorited":false,"created_at":"Wed Apr 01 10:49:02 +0000 2009","in_reply_to_screen_name":"jnunemaker","id":1430619438,"source":"<a href=\"http:\/\/thecosmicmachine.com\/eventbox\/\">EventBox<\/a>"},{"in_reply_to_user_id":4243,"user":{"description":"Twenty-something physician, entrepreneur, biker, on Rails, et cetera.","url":"http:\/\/y.freshpursuits.com\/","name":"Yasser Dahab","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/65001080\/feet_normal.png","protected":false,"followers_count":191,"screen_name":"yasserdahab","location":"Denver","id":728893},"text":"@jnunemaker you are my hero.","favorited":false,"created_at":"Wed Apr 01 05:34:36 +0000 2009","in_reply_to_screen_name":"jnunemaker","truncated":false,"id":1429670006,"in_reply_to_status_id":1429401587,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"}]
@@ -0,0 +1 @@
1
+ {"results":[{"text":"Someone asked about a tweet reader. Easy to do in ruby with @jnunemaker's twitter gem and the win32-sapi gem, if you are on windows.","to_user_id":null,"from_user":"PatParslow","id":1446425395,"from_user_id":297147,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/www.tweetdeck.com\/&quot;&gt;TweetDeck&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/53254225\/pat_normal.jpg","created_at":"Fri, 03 Apr 2009 16:55:40 +0000"},{"text":"@jnunemaker cold out today. cold yesterday. even colder today.","to_user_id":19106,"to_user":"jnunemaker","from_user":"oaknd1","id":1446039519,"from_user_id":112472,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/iconfactory.com\/software\/twitterrific&quot;&gt;twitterrific&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/101535873\/avatarone_normal.png","created_at":"Fri, 03 Apr 2009 15:51:12 +0000"},{"text":"@jnunemaker could you try to do HTTParty.get(&quot;http:\/\/digg.com&quot;) ? I find myself waiting forever for the response. Posted a ticket on that.","to_user_id":19106,"to_user":"jnunemaker","from_user":"paulozoom","id":1445973779,"from_user_id":258387,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/thecosmicmachine.com\/eventbox\/&quot;&gt;EventBox&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/64142495\/zoom2_normal.png","created_at":"Fri, 03 Apr 2009 15:40:20 +0000"},{"text":"Crack, @jnunemaker's new gem for XML and JSON parsing, is aptly named. One hit and I know it will be hard to quit.","to_user_id":null,"from_user":"jerry","id":1442399154,"from_user_id":78336,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/iconfactory.com\/software\/twitterrific&quot;&gt;twitterrific&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/54424361\/jerry135x135_normal.jpg","created_at":"Fri, 03 Apr 2009 01:27:02 +0000"},{"text":"@jnunemaker An unobtrusive Fancy Zoom image behavior for use with LowPro: http:\/\/gist.github.com\/89299","to_user_id":19106,"to_user":"jnunemaker","from_user":"johnwlong2000","id":1439627059,"from_user_id":445276,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/iconfactory.com\/software\/twitterrific&quot;&gt;twitterrific&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/66571046\/john7_normal.jpg","created_at":"Thu, 02 Apr 2009 17:23:21 +0000"},{"text":"@jnunemaker Trying to dominate the world, heh?","to_user_id":19106,"to_user":"jnunemaker","from_user":"paulozoom","id":1438634711,"from_user_id":258387,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/thecosmicmachine.com\/eventbox\/&quot;&gt;EventBox&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/64142495\/zoom2_normal.png","created_at":"Thu, 02 Apr 2009 14:37:38 +0000"},{"text":"@jnunemaker la e today?","to_user_id":19106,"to_user":"jnunemaker","from_user":"kebabdylan","id":1438618345,"from_user_id":162717,"iso_language_code":"es","source":"&lt;a href=&quot;http:\/\/iconfactory.com\/software\/twitterrific&quot;&gt;twitterrific&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/51681870\/kebabdylan-32_normal.jpg","created_at":"Thu, 02 Apr 2009 14:34:55 +0000"},{"text":"@jnunemaker ...have you read &quot;Raccoon Willie: Dead Man&quot; yet?","to_user_id":19106,"to_user":"jnunemaker","from_user":"damygeebo","id":1436292726,"from_user_id":3653781,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/twitter.com\/&quot;&gt;web&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/71327390\/wilcat_normal.jpg","created_at":"Thu, 02 Apr 2009 03:53:16 +0000"},{"text":"@jnunemaker Ouch. That sucks. I rode bitch know a sport bike but that was before I knew how to ride (that person taught me a bit).","to_user_id":19106,"to_user":"jnunemaker","from_user":"stickel","id":1436127953,"from_user_id":2132320,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/www.atebits.com\/software\/tweetie\/&quot;&gt;Tweetie&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/14998572\/mike-sxsw07-56x56_normal.jpg","created_at":"Thu, 02 Apr 2009 03:20:20 +0000"},{"text":"@jnunemaker thanks for the heads up. I'm mostly just using email as an api.","to_user_id":19106,"to_user":"jnunemaker","from_user":"bradleyktaylor","id":1435461339,"from_user_id":49333,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/twitter.com\/&quot;&gt;web&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/56157945\/Photo_1_normal.jpg","created_at":"Thu, 02 Apr 2009 01:18:18 +0000"},{"text":"@jnunemaker don't do it man. Step away from the bike.","to_user_id":19106,"to_user":"jnunemaker","from_user":"rwdaigle","id":1435366505,"from_user_id":153214,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/iconfactory.com\/software\/twitterrific&quot;&gt;twitterrific&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/45111492\/ryan_vector_normal.png","created_at":"Thu, 02 Apr 2009 01:00:55 +0000"},{"text":"@jnunemaker No? Why not? And which part wouldn't you wish on anyone?","to_user_id":19106,"to_user":"jnunemaker","from_user":"stickel","id":1435238296,"from_user_id":2132320,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/iconfactory.com\/software\/twitterrific&quot;&gt;twitterrific&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/14998572\/mike-sxsw07-56x56_normal.jpg","created_at":"Thu, 02 Apr 2009 00:36:48 +0000"},{"text":"@jnunemaker And they'd all cheer and buy us drinks the entire time we are there. It will be AWESOME! @orderedlist can ride bitch. :)","to_user_id":19106,"to_user":"jnunemaker","from_user":"stickel","id":1435063394,"from_user_id":2132320,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/iconfactory.com\/software\/twitterrific&quot;&gt;twitterrific&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/14998572\/mike-sxsw07-56x56_normal.jpg","created_at":"Wed, 01 Apr 2009 23:58:39 +0000"},{"text":"@jnunemaker I dunno. The V-ROD Muscle is pretty hot. http:\/\/moourl.com\/p0q99","to_user_id":19106,"to_user":"jnunemaker","from_user":"stickel","id":1434948902,"from_user_id":2132320,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/iconfactory.com\/software\/twitterrific&quot;&gt;twitterrific&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/14998572\/mike-sxsw07-56x56_normal.jpg","created_at":"Wed, 01 Apr 2009 23:36:31 +0000"},{"text":"@jnunemaker Johnny should get a Harley. :D Then ride it to Sturgis with me one of these years. :)","to_user_id":19106,"to_user":"jnunemaker","from_user":"stickel","id":1434706104,"from_user_id":2132320,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/iconfactory.com\/software\/twitterrific&quot;&gt;twitterrific&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/14998572\/mike-sxsw07-56x56_normal.jpg","created_at":"Wed, 01 Apr 2009 22:51:20 +0000"}],"since_id":0,"max_id":1446791544,"refresh_url":"?since_id=1446791544&q=%40jnunemaker","results_per_page":15,"next_page":"?page=2&max_id=1446791544&q=%40jnunemaker","completed_in":0.023961,"page":1,"query":"%40jnunemaker"}
@@ -0,0 +1 @@
1
+ {"results":[{"text":"Colder out today than expected. Headed to the Beanery for some morning wakeup drink. Latte or coffee...hmmm...","to_user_id":null,"from_user":"jnunemaker","id":1445986256,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/www.atebits.com\/software\/tweetie\/&quot;&gt;Tweetie&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Fri, 03 Apr 2009 15:42:24 +0000"},{"text":"@jerry haha. @erunyon said he didn't think it was unique enough for google searches. :)","to_user_id":78336,"to_user":"jerry","from_user":"jnunemaker","id":1443087283,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/twitter.com\/&quot;&gt;web&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Fri, 03 Apr 2009 03:34:26 +0000"},{"text":"Rob Dyrdek is the funniest man alive. That is all.","to_user_id":null,"from_user":"jnunemaker","id":1441588944,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/www.atebits.com\/software\/tweetie\/&quot;&gt;Tweetie&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 22:57:00 +0000"},{"text":"Dang, forgot about CAN http:\/\/calendaraboutnothing.com\/~jnunemaker yesterday and broke my streak of 5 days in a row.","to_user_id":null,"from_user":"jnunemaker","id":1438916463,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/twitter.com\/&quot;&gt;web&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 15:24:17 +0000"},{"text":"@bryckbost yep. I haven't used dash much but it seems cool. Give it a try.","to_user_id":12964,"to_user":"bryckbost","from_user":"jnunemaker","id":1438754546,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/www.atebits.com\/software\/tweetie\/&quot;&gt;Tweetie&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 14:57:49 +0000"},{"text":"@nateklaiber dive into python is free online.","to_user_id":128782,"to_user":"nateklaiber","from_user":"jnunemaker","id":1438718326,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/www.atebits.com\/software\/tweetie\/&quot;&gt;Tweetie&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 14:51:47 +0000"},{"text":"@kebabsylan yes. I'll be there at noon.","to_user_id":9689026,"to_user":"kebabsylan","from_user":"jnunemaker","id":1438637063,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/help.twitter.com\/index.php?pg=kb.page&amp;id=75&quot;&gt;txt&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 14:38:03 +0000"},{"text":"http:\/\/twitpic.com\/2pwjy - The books I'm reading right now. Wish I had more time.","to_user_id":null,"from_user":"jnunemaker","id":1438613754,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/twitpic.com\/&quot;&gt;TwitPic&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 14:34:10 +0000"},{"text":"Reading a couple hokey named books of late, but really enjoying them. &quot;I Will Teach You To Be Rich&quot; and &quot;Get Anyone To Do Anything&quot;.","to_user_id":null,"from_user":"jnunemaker","id":1436286949,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/twitter.com\/&quot;&gt;web&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 03:52:02 +0000"},{"text":"Megan Joy turned into a train wreck tonight.","to_user_id":null,"from_user":"jnunemaker","id":1435963959,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/help.twitter.com\/index.php?pg=kb.page&amp;id=75&quot;&gt;txt&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 02:51:01 +0000"},{"text":"Watching latest House. Cool idea.","to_user_id":null,"from_user":"jnunemaker","id":1435502494,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/www.atebits.com\/software\/tweetie\/&quot;&gt;Tweetie&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 01:25:46 +0000"},{"text":"@rwdaigle not a motorcycle man?","to_user_id":153214,"to_user":"rwdaigle","from_user":"jnunemaker","id":1435443029,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/www.atebits.com\/software\/tweetie\/&quot;&gt;Tweetie&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 01:14:52 +0000"},{"text":"@bradleyktaylor I did some ruby wufoo a few months back. It's on github.","to_user_id":49333,"to_user":"bradleyktaylor","from_user":"jnunemaker","id":1435440065,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/www.atebits.com\/software\/tweetie\/&quot;&gt;Tweetie&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 01:14:19 +0000"},{"text":"@stickel riding bitch on motorcycle. Bike died once on trip and had to ride on back of my dad's.","to_user_id":2132320,"to_user":"stickel","from_user":"jnunemaker","id":1435431849,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/www.atebits.com\/software\/tweetie\/&quot;&gt;Tweetie&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 01:12:46 +0000"},{"text":"@stickel haha. Having done that twice I wouldn't wish it on anyone. :)","to_user_id":2132320,"to_user":"stickel","from_user":"jnunemaker","id":1435217155,"from_user_id":19106,"iso_language_code":"en","source":"&lt;a href=&quot;http:\/\/www.atebits.com\/software\/tweetie\/&quot;&gt;Tweetie&lt;\/a&gt;","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","created_at":"Thu, 02 Apr 2009 00:31:52 +0000"}],"since_id":0,"max_id":1446791544,"refresh_url":"?since_id=1446791544&q=from%3Ajnunemaker","results_per_page":15,"next_page":"?page=2&max_id=1446791544&q=from%3Ajnunemaker","completed_in":0.024906,"page":1,"query":"from%3Ajnunemaker"}
@@ -0,0 +1 @@
1
+ {"in_reply_to_screen_name":null,"user":{"profile_sidebar_border_color":"181A1E","description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"friends_count":161,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"notifications":false,"profile_background_color":"1A1B1F","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","profile_background_tile":false,"profile_text_color":"666666","followers_count":1231,"protected":false,"favourites_count":73,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_link_color":"2FC2EF","statuses_count":4664,"profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif"},"text":"Rob Dyrdek is the funniest man alive. That is all.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 22:57:00 +0000 2009","favorited":false,"id":1441588944,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"}
@@ -0,0 +1 @@
1
+ {"in_reply_to_screen_name":null,"user":{"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"friends_count":161,"profile_sidebar_border_color":"181A1E","following":false,"favourites_count":80,"notifications":false,"profile_background_color":"1A1B1F","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","statuses_count":4771,"protected":false,"profile_background_tile":false,"profile_text_color":"666666","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","profile_link_color":"2FC2EF","location":"Mishawaka, Indiana","screen_name":"jnunemaker","id":4243,"profile_sidebar_fill_color":"252429","followers_count":1252},"text":"Eating some oatmeal and butterscotch cookies with a cold glass of milk for breakfast. Tasty!","truncated":false,"in_reply_to_status_id":null,"created_at":"Thu Apr 16 14:12:36 +0000 2009","in_reply_to_user_id":null,"id":1533815199,"favorited":false,"source":"<a href=\"http:\/\/twitter.rubyforge.org\">Twitter App<\/a>"}
@@ -0,0 +1 @@
1
+ {"trends":[{"name":"Ben & Jerry's","url":"http:\/\/search.twitter.com\/search?q=%22Ben+%26+Jerry%27s%22"},{"name":"Miss California","url":"http:\/\/search.twitter.com\/search?q=%22Miss+California%22+OR+California"},{"name":"Susan Boyle","url":"http:\/\/search.twitter.com\/search?q=%22Susan+Boyle%22"},{"name":"Lego Rock Band","url":"http:\/\/search.twitter.com\/search?q=%22Lego+Rock+Band%22"},{"name":"#earthday","url":"http:\/\/search.twitter.com\/search?q=%23earthday"},{"name":"Perez Hilton","url":"http:\/\/search.twitter.com\/search?q=%22Perez+Hilton%22"},{"name":"AT&T","url":"http:\/\/search.twitter.com\/search?q=AT%26T"},{"name":"Twibe","url":"http:\/\/search.twitter.com\/search?q=Twibe"},{"name":"#gknr","url":"http:\/\/search.twitter.com\/search?q=%23gknr"},{"name":"Green","url":"http:\/\/search.twitter.com\/search?q=Green"}],"as_of":"Tue, 21 Apr 2009 16:59:03 +0000"}
@@ -0,0 +1 @@
1
+ {"profile_background_tile":false,"friends_count":159,"description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"notifications":null,"favourites_count":79,"profile_background_color":"1A1B1F","following":null,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","statuses_count":4752,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","time_zone":"Indiana (East)","protected":false,"screen_name":"jnunemaker","status":{"in_reply_to_status_id":null,"in_reply_to_user_id":null,"text":"224! http:\/\/flightcontrolled.com\/ Holy crap. There are some really high flight control scorers out there. *gives up* :D","favorited":false,"in_reply_to_screen_name":null,"created_at":"Tue Apr 14 20:38:49 +0000 2009","truncated":false,"id":1519558635,"source":"<a href=\"http:\/\/twitter.rubyforge.org\">Twitter App<\/a>"},"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","followers_count":1248,"location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E"}
@@ -0,0 +1 @@
1
+ [{"in_reply_to_screen_name":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"profile_sidebar_border_color":"181A1E","notifications":false,"profile_background_tile":false,"friends_count":160,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"favourites_count":74,"profile_background_color":"1A1B1F","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4666,"protected":false,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_link_color":"2FC2EF","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_fill_color":"252429","followers_count":1234},"text":"Colder out today than expected. Headed to the Beanery for some morning wakeup drink. Latte or coffee...hmmm...","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 15:42:24 +0000 2009","favorited":false,"id":1445986256,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"in_reply_to_screen_name":"jerry","user":{"notifications":false,"profile_background_tile":false,"friends_count":160,"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":73,"profile_background_color":"1A1B1F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4665,"protected":false,"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E","followers_count":1231},"text":"@jerry haha. @erunyon said he didn't think it was unique enough for google searches. :)","truncated":false,"in_reply_to_status_id":1442399154,"in_reply_to_user_id":613,"created_at":"Fri Apr 03 03:34:26 +0000 2009","favorited":false,"id":1443087283,"source":"web"},{"in_reply_to_screen_name":null,"user":{"profile_sidebar_border_color":"181A1E","description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"friends_count":161,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"notifications":false,"profile_background_color":"1A1B1F","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","profile_background_tile":false,"profile_text_color":"666666","followers_count":1231,"protected":false,"favourites_count":73,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_link_color":"2FC2EF","statuses_count":4664,"profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif"},"text":"Rob Dyrdek is the funniest man alive. That is all.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 22:57:00 +0000 2009","favorited":false,"id":1441588944,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"favorited":false,"user":{"profile_sidebar_fill_color":"252429","description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"profile_sidebar_border_color":"181A1E","followers_count":1228,"following":true,"notifications":false,"profile_background_tile":false,"friends_count":161,"time_zone":"Indiana (East)","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","favourites_count":73,"profile_background_color":"1A1B1F","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","screen_name":"jnunemaker","statuses_count":4663,"profile_link_color":"2FC2EF","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006"},"text":"Dang, forgot about CAN http:\/\/calendaraboutnothing.com\/~jnunemaker yesterday and broke my streak of 5 days in a row.","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1438916463,"in_reply_to_user_id":null,"source":"web","created_at":"Thu Apr 02 15:24:17 +0000 2009"},{"favorited":false,"user":{"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","friends_count":161,"description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"profile_background_color":"1A1B1F","following":true,"time_zone":"Indiana (East)","profile_text_color":"666666","followers_count":1228,"url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","notifications":false,"profile_background_tile":false,"favourites_count":73,"profile_link_color":"2FC2EF","screen_name":"jnunemaker","statuses_count":4662,"profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_border_color":"181A1E"},"text":"@bryckbost yep. I haven't used dash much but it seems cool. Give it a try.","in_reply_to_screen_name":"bryckbost","truncated":false,"in_reply_to_status_id":1438082787,"id":1438754546,"in_reply_to_user_id":8494682,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>","created_at":"Thu Apr 02 14:57:49 +0000 2009"},{"favorited":false,"user":{"profile_sidebar_fill_color":"252429","description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"profile_sidebar_border_color":"181A1E","followers_count":1228,"following":true,"notifications":false,"profile_background_tile":false,"friends_count":161,"time_zone":"Indiana (East)","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","favourites_count":73,"profile_background_color":"1A1B1F","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","screen_name":"jnunemaker","statuses_count":4661,"profile_link_color":"2FC2EF","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006"},"text":"@nateklaiber dive into python is free online.","in_reply_to_screen_name":"nateklaiber","truncated":false,"in_reply_to_status_id":1438415604,"id":1438718326,"in_reply_to_user_id":13722,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>","created_at":"Thu Apr 02 14:51:47 +0000 2009"},{"in_reply_to_screen_name":null,"user":{"friends_count":161,"profile_background_color":"1A1B1F","description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_text_color":"666666","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_link_color":"2FC2EF","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","protected":false,"statuses_count":4660,"profile_sidebar_fill_color":"252429","notifications":false,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_border_color":"181A1E","followers_count":1228,"profile_background_tile":false,"location":"Mishawaka, Indiana","id":4243},"text":"@kebabsylan yes. I'll be there at noon.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 14:38:03 +0000 2009","favorited":false,"id":1438637063,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>"},{"in_reply_to_screen_name":null,"user":{"notifications":false,"profile_background_tile":false,"friends_count":161,"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_background_color":"1A1B1F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4659,"protected":false,"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E","followers_count":1228},"text":"http:\/\/twitpic.com\/2pwjy - The books I'm reading right now. Wish I had more time.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 14:34:10 +0000 2009","favorited":false,"id":1438613754,"source":"<a href=\"http:\/\/twitpic.com\/\">TwitPic<\/a>"},{"favorited":false,"user":{"statuses_count":4658,"profile_background_color":"1A1B1F","description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"followers_count":1226,"profile_text_color":"666666","following":true,"favourites_count":72,"time_zone":"Indiana (East)","profile_link_color":"2FC2EF","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","notifications":false,"profile_sidebar_fill_color":"252429","friends_count":161,"screen_name":"jnunemaker","profile_sidebar_border_color":"181A1E","profile_background_tile":false,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006"},"text":"Reading a couple hokey named books of late, but really enjoying them. \"I Will Teach You To Be Rich\" and \"Get Anyone To Do Anything\".","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1436286949,"in_reply_to_user_id":null,"source":"web","created_at":"Thu Apr 02 03:52:02 +0000 2009"},{"favorited":false,"user":{"profile_link_color":"2FC2EF","description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"profile_sidebar_fill_color":"252429","followers_count":1226,"following":true,"time_zone":"Indiana (East)","profile_sidebar_border_color":"181A1E","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","notifications":false,"profile_background_tile":false,"friends_count":161,"protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","favourites_count":72,"profile_background_color":"1A1B1F","screen_name":"jnunemaker","statuses_count":4657,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006"},"text":"Megan Joy turned into a train wreck tonight.","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1435963959,"in_reply_to_user_id":null,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>","created_at":"Thu Apr 02 02:51:01 +0000 2009"},{"in_reply_to_screen_name":null,"user":{"notifications":false,"profile_background_tile":false,"friends_count":161,"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_background_color":"1A1B1F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4656,"protected":false,"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E","followers_count":1226},"text":"Watching latest House. Cool idea.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 01:25:46 +0000 2009","favorited":false,"id":1435502494,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"favorited":false,"user":{"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","friends_count":161,"description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"profile_sidebar_border_color":"181A1E","following":true,"time_zone":"Indiana (East)","profile_background_color":"1A1B1F","followers_count":1226,"url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","notifications":false,"profile_background_tile":false,"favourites_count":72,"profile_text_color":"666666","screen_name":"jnunemaker","statuses_count":4655,"profile_link_color":"2FC2EF","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429"},"text":"@rwdaigle not a motorcycle man?","in_reply_to_screen_name":"rwdaigle","truncated":false,"in_reply_to_status_id":1435366505,"id":1435443029,"in_reply_to_user_id":658343,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>","created_at":"Thu Apr 02 01:14:52 +0000 2009"},{"favorited":false,"user":{"profile_sidebar_border_color":"181A1E","followers_count":1226,"description":"Loves his wife, ruby, notre dame football and iu basketball","profile_background_tile":false,"utc_offset":-18000,"following":true,"friends_count":161,"profile_background_color":"1A1B1F","time_zone":"Indiana (East)","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","favourites_count":72,"profile_text_color":"666666","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_link_color":"2FC2EF","screen_name":"jnunemaker","statuses_count":4654,"profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"notifications":false,"created_at":"Sun Aug 13 22:56:06 +0000 2006"},"text":"@bradleyktaylor I did some ruby wufoo a few months back. It's on github.","in_reply_to_screen_name":"bradleyktaylor","truncated":false,"in_reply_to_status_id":1435320189,"id":1435440065,"in_reply_to_user_id":13782402,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>","created_at":"Thu Apr 02 01:14:19 +0000 2009"},{"in_reply_to_screen_name":"stickel","user":{"notifications":true,"profile_background_tile":false,"friends_count":161,"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_background_color":"1A1B1F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4653,"protected":false,"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E","followers_count":1226},"text":"@stickel riding bitch on motorcycle. Bike died once on trip and had to ride on back of my dad's.","truncated":false,"in_reply_to_status_id":1435238296,"in_reply_to_user_id":15403,"created_at":"Thu Apr 02 01:12:46 +0000 2009","favorited":false,"id":1435431849,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"in_reply_to_screen_name":"stickel","user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"profile_background_color":"1A1B1F","followers_count":1226,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"notifications":true,"profile_background_tile":false,"favourites_count":72,"profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4652,"profile_link_color":"2FC2EF","protected":false,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","friends_count":161,"profile_sidebar_border_color":"181A1E","location":"Mishawaka, Indiana","id":4243},"text":"@stickel haha. Having done that twice I wouldn't wish it on anyone. :)","truncated":false,"in_reply_to_status_id":1435063394,"in_reply_to_user_id":15403,"created_at":"Thu Apr 02 00:31:52 +0000 2009","favorited":false,"id":1435217155,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"favorited":false,"user":{"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","friends_count":161,"description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"profile_sidebar_border_color":"181A1E","following":true,"time_zone":"Indiana (East)","profile_background_color":"1A1B1F","followers_count":1225,"url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","notifications":false,"profile_background_tile":false,"favourites_count":72,"profile_text_color":"666666","screen_name":"jnunemaker","statuses_count":4651,"profile_link_color":"2FC2EF","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429"},"text":"@stickel Dude. We would roll in and be like \"LISTEN UP! WE ARE WEB DEVELOPERS!\" Heads would turn.","in_reply_to_screen_name":"stickel","truncated":false,"in_reply_to_status_id":1434706104,"id":1434998057,"in_reply_to_user_id":15403,"source":"web","created_at":"Wed Apr 01 23:46:00 +0000 2009"},{"in_reply_to_screen_name":null,"user":{"notifications":false,"profile_background_tile":false,"friends_count":179,"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_background_color":"1A1B1F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4650,"protected":false,"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E","followers_count":1226},"text":"Sat on a fat bob today. Want! http:\/\/tr.im\/i7ha Love the flat black. Wish I could get a used one for less money, but they are too new.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Wed Apr 01 23:16:13 +0000 2009","favorited":false,"id":1434842036,"source":"web"},{"favorited":false,"user":{"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","friends_count":179,"description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"profile_background_color":"1A1B1F","following":true,"time_zone":"Indiana (East)","profile_text_color":"666666","followers_count":1226,"url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","notifications":false,"profile_background_tile":false,"favourites_count":72,"profile_link_color":"2FC2EF","screen_name":"jnunemaker","statuses_count":4649,"profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_border_color":"181A1E"},"text":"@Carrie I agree with @orderedlist. Taco Bell is better than Hacienda.","in_reply_to_screen_name":"Carrie","truncated":false,"in_reply_to_status_id":1434732331,"id":1434741725,"in_reply_to_user_id":15323,"source":"<a href=\"http:\/\/loungeapp.com\">Lounge<\/a>","created_at":"Wed Apr 01 22:57:45 +0000 2009"},{"truncated":false,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","location":"Mishawaka, Indiana","id":4243,"followers_count":1226,"screen_name":"jnunemaker"},"in_reply_to_status_id":null,"text":"Just test drove an Escape with @nunieswife and visited the Harley Store. Johnny want a Harley...BAD!","in_reply_to_user_id":null,"favorited":false,"created_at":"Wed Apr 01 22:31:04 +0000 2009","in_reply_to_screen_name":null,"id":1434591491,"source":"web"},{"truncated":false,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","location":"Mishawaka, Indiana","id":4243,"followers_count":1222,"screen_name":"jnunemaker"},"in_reply_to_status_id":1431726310,"text":"@acornoAk Consider yourself unfollowed for that prank.","in_reply_to_user_id":18173702,"favorited":false,"created_at":"Wed Apr 01 14:52:45 +0000 2009","in_reply_to_screen_name":"acornoAk","id":1431763938,"source":"web"}]
@@ -0,0 +1,36 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+ require 'matchy'
5
+ require 'mocha'
6
+ require 'fakeweb'
7
+
8
+ FakeWeb.allow_net_connect = false
9
+
10
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
11
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
12
+ require 'twitter'
13
+
14
+ class Test::Unit::TestCase
15
+ end
16
+
17
+ def fixture_file(filename)
18
+ return '' if filename == ''
19
+ file_path = File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
20
+ File.read(file_path)
21
+ end
22
+
23
+ def twitter_url(url)
24
+ url =~ /^http/ ? url : "http://twitter.com:80#{url}"
25
+ end
26
+
27
+ def stub_get(url, filename, status=nil)
28
+ options = {:string => fixture_file(filename)}
29
+ options.merge!({:status => status}) unless status.nil?
30
+
31
+ FakeWeb.register_uri(:get, twitter_url(url), options)
32
+ end
33
+
34
+ def stub_post(url, filename)
35
+ FakeWeb.register_uri(:post, twitter_url(url), :string => fixture_file(filename))
36
+ end
@@ -0,0 +1,95 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class BaseTest < Test::Unit::TestCase
4
+ context "base" do
5
+ setup do
6
+ oauth = Twitter::OAuth.new('token', 'secret')
7
+ @access_token = OAuth::AccessToken.new(oauth.consumer, 'atoken', 'asecret')
8
+ oauth.stubs(:access_token).returns(@access_token)
9
+ @twitter = Twitter::Base.new(oauth)
10
+ end
11
+
12
+ context "initialize" do
13
+ should "require a client" do
14
+ @twitter.client.should respond_to(:get)
15
+ @twitter.client.should respond_to(:post)
16
+ end
17
+ end
18
+
19
+ should "delegate get to the client" do
20
+ @access_token.expects(:get).with('/foo').returns(nil)
21
+ @twitter.get('/foo')
22
+ end
23
+
24
+ should "delegate post to the client" do
25
+ @access_token.expects(:post).with('/foo', {:bar => 'baz'}).returns(nil)
26
+ @twitter.post('/foo', {:bar => 'baz'})
27
+ end
28
+
29
+ context "hitting the api" do
30
+ should "be able to get friends timeline" do
31
+ stub_get('/statuses/friends_timeline.json', 'friends_timeline.json')
32
+ timeline = @twitter.friends_timeline
33
+ timeline.size.should == 20
34
+ first = timeline.first
35
+ first.source.should == '<a href="http://www.atebits.com/software/tweetie/">Tweetie</a>'
36
+ first.user.name.should == 'John Nunemaker'
37
+ first.user.url.should == 'http://railstips.org/about'
38
+ first.id.should == 1441588944
39
+ first.favorited.should be(false)
40
+ end
41
+
42
+ should "be able to get user timeline" do
43
+ stub_get('/statuses/user_timeline.json', 'user_timeline.json')
44
+ timeline = @twitter.user_timeline
45
+ timeline.size.should == 20
46
+ first = timeline.first
47
+ first.text.should == 'Colder out today than expected. Headed to the Beanery for some morning wakeup drink. Latte or coffee...hmmm...'
48
+ first.user.name.should == 'John Nunemaker'
49
+ end
50
+
51
+ should "be able to get a status" do
52
+ stub_get('/statuses/show/1441588944.json', 'status.json')
53
+ status = @twitter.status(1441588944)
54
+ status.user.name.should == 'John Nunemaker'
55
+ status.id.should == 1441588944
56
+ end
57
+
58
+ should "be able to update status" do
59
+ stub_post('/statuses/update.json', 'status.json')
60
+ status = @twitter.update('Rob Dyrdek is the funniest man alive. That is all.')
61
+ status.user.name.should == 'John Nunemaker'
62
+ status.text.should == 'Rob Dyrdek is the funniest man alive. That is all.'
63
+ end
64
+
65
+ should "be able to get replies" do
66
+ stub_get('/statuses/replies.json', 'replies.json')
67
+ replies = @twitter.replies
68
+ replies.size.should == 19
69
+ first = replies.first
70
+ first.user.name.should == '-oAk-'
71
+ first.text.should == '@jnunemaker cold out today. cold yesterday. even colder today.'
72
+ end
73
+
74
+ should "be able to get follower ids" do
75
+ stub_get('/followers/ids.json', 'follower_ids.json')
76
+ follower_ids = @twitter.follower_ids
77
+ follower_ids.size.should == 1252
78
+ follower_ids.first.should == 613
79
+ end
80
+
81
+ should "be able to get friend ids" do
82
+ stub_get('/friends/ids.json', 'friend_ids.json')
83
+ friend_ids = @twitter.friend_ids
84
+ friend_ids.size.should == 161
85
+ friend_ids.first.should == 15323
86
+ end
87
+
88
+ should "correctly hash statuses" do
89
+ stub_get('/statuses/friends_timeline.json', 'friends_timeline.json')
90
+ hashes = @twitter.friends_timeline.map{ |s| s.hash }
91
+ hashes.should == @twitter.friends_timeline.map{ |s| s.hash }
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,70 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class HTTPAuthTest < Test::Unit::TestCase
4
+ context "Creating new instance" do
5
+ should "should take user and password" do
6
+ twitter = Twitter::HTTPAuth.new('username', 'password')
7
+ twitter.username.should == 'username'
8
+ twitter.password.should == 'password'
9
+ end
10
+
11
+ should "accept options" do
12
+ twitter = Twitter::HTTPAuth.new('username', 'password', :ssl => true)
13
+ twitter.options.should == {:ssl => true}
14
+ end
15
+
16
+ should "default ssl to false" do
17
+ twitter = Twitter::HTTPAuth.new('username', 'password')
18
+ twitter.options[:ssl].should be(false)
19
+ end
20
+
21
+ should "use https if ssl is true" do
22
+ Twitter::HTTPAuth.expects(:base_uri).with('https://twitter.com')
23
+ twitter = Twitter::HTTPAuth.new('username', 'password', :ssl => true)
24
+ end
25
+
26
+ should "use http if ssl is false" do
27
+ Twitter::HTTPAuth.expects(:base_uri).with('http://twitter.com')
28
+ twitter = Twitter::HTTPAuth.new('username', 'password', :ssl => false)
29
+ end
30
+ end
31
+
32
+ context "Client methods" do
33
+ setup do
34
+ @twitter = Twitter::HTTPAuth.new('username', 'password')
35
+ end
36
+
37
+ should "be able to get" do
38
+ stub_get('http://twitter.com:80/statuses/user_timeline.json', 'user_timeline.json')
39
+ response = @twitter.get('/statuses/user_timeline.json')
40
+ response.should == fixture_file('user_timeline.json')
41
+ end
42
+
43
+ should "be able to get with headers" do
44
+ @twitter.class.expects(:get).with(
45
+ '/statuses/user_timeline.json', {
46
+ :basic_auth => {:username => 'username', :password => 'password'},
47
+ :headers => {'Foo' => 'Bar'}
48
+ }
49
+ ).returns(fixture_file('user_timeline.json'))
50
+ @twitter.get('/statuses/user_timeline.json', {'Foo' => 'Bar'})
51
+ end
52
+
53
+ should "be able to post" do
54
+ stub_post('http://twitter.com:80/statuses/update.json', 'status.json')
55
+ response = @twitter.post('/statuses/update.json', :text => 'My update.')
56
+ response.should == fixture_file('status.json')
57
+ end
58
+
59
+ should "be able to post with headers" do
60
+ @twitter.class.expects(:post).with(
61
+ '/statuses/update.json', {
62
+ :headers => {'Foo' => 'Bar'},
63
+ :body => {:text => 'My update.'},
64
+ :basic_auth => {:username => 'username', :password => 'password'}
65
+ }
66
+ ).returns(fixture_file('status.json'))
67
+ @twitter.post('/statuses/update.json', {:text => 'My update.'}, {'Foo' => 'Bar'})
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,71 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class OAuthTest < Test::Unit::TestCase
4
+ should "initialize with consumer token and secret" do
5
+ twitter = Twitter::OAuth.new('token', 'secret')
6
+
7
+ twitter.ctoken.should == 'token'
8
+ twitter.csecret.should == 'secret'
9
+ end
10
+
11
+ should "have a consumer" do
12
+ consumer = mock('oauth consumer')
13
+ OAuth::Consumer.expects(:new).with('token', 'secret', {:site => 'http://twitter.com'}).returns(consumer)
14
+ twitter = Twitter::OAuth.new('token', 'secret')
15
+
16
+ twitter.consumer.should == consumer
17
+ end
18
+
19
+ should "have a request token from the consumer" do
20
+ consumer = mock('oauth consumer')
21
+ request_token = mock('request token')
22
+ consumer.expects(:get_request_token).returns(request_token)
23
+ OAuth::Consumer.expects(:new).with('token', 'secret', {:site => 'http://twitter.com'}).returns(consumer)
24
+ twitter = Twitter::OAuth.new('token', 'secret')
25
+
26
+ twitter.request_token.should == request_token
27
+ end
28
+
29
+ should "be able to create access token from request token and secret" do
30
+ twitter = Twitter::OAuth.new('token', 'secret')
31
+ consumer = OAuth::Consumer.new('token', 'secret', {:site => 'http://twitter.com'})
32
+ twitter.stubs(:consumer).returns(consumer)
33
+
34
+ access_token = mock('access token', :token => 'atoken', :secret => 'asecret')
35
+ request_token = mock('request token')
36
+ request_token.expects(:get_access_token).returns(access_token)
37
+ OAuth::RequestToken.expects(:new).with(consumer, 'rtoken', 'rsecret').returns(request_token)
38
+
39
+ twitter.authorize_from_request('rtoken', 'rsecret')
40
+ twitter.access_token.class.should be(OAuth::AccessToken)
41
+ twitter.access_token.token.should == 'atoken'
42
+ twitter.access_token.secret.should == 'asecret'
43
+ end
44
+
45
+ should "be able to create access token from access token and secret" do
46
+ twitter = Twitter::OAuth.new('token', 'secret')
47
+ consumer = OAuth::Consumer.new('token', 'secret', {:site => 'http://twitter.com'})
48
+ twitter.stubs(:consumer).returns(consumer)
49
+
50
+ twitter.authorize_from_access('atoken', 'asecret')
51
+ twitter.access_token.class.should be(OAuth::AccessToken)
52
+ twitter.access_token.token.should == 'atoken'
53
+ twitter.access_token.secret.should == 'asecret'
54
+ end
55
+
56
+ should "delegate get to access token" do
57
+ access_token = mock('access token')
58
+ twitter = Twitter::OAuth.new('token', 'secret')
59
+ twitter.stubs(:access_token).returns(access_token)
60
+ access_token.expects(:get).returns(nil)
61
+ twitter.get('/foo')
62
+ end
63
+
64
+ should "delegate post to access token" do
65
+ access_token = mock('access token')
66
+ twitter = Twitter::OAuth.new('token', 'secret')
67
+ twitter.stubs(:access_token).returns(access_token)
68
+ access_token.expects(:post).returns(nil)
69
+ twitter.post('/foo')
70
+ end
71
+ end
@@ -0,0 +1,217 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class RequestTest < Test::Unit::TestCase
4
+ context "new get request" do
5
+ setup do
6
+ @client = mock('twitter client')
7
+ @request = Twitter::Request.new(@client, :get, '/statuses/user_timeline.json', {:query => {:since_id => 1234}})
8
+ end
9
+
10
+ should "have client" do
11
+ @request.client.should == @client
12
+ end
13
+
14
+ should "have method" do
15
+ @request.method.should == :get
16
+ end
17
+
18
+ should "have path" do
19
+ @request.path.should == '/statuses/user_timeline.json'
20
+ end
21
+
22
+ should "have options" do
23
+ @request.options[:query].should == {:since_id => 1234}
24
+ end
25
+
26
+ should "have uri" do
27
+ @request.uri.should == '/statuses/user_timeline.json?since_id=1234'
28
+ end
29
+
30
+ context "performing request for collection" do
31
+ setup do
32
+ response = mock('response') do
33
+ stubs(:body).returns(fixture_file('user_timeline.json'))
34
+ stubs(:code).returns('200')
35
+ end
36
+
37
+ @client.expects(:get).returns(response)
38
+ @object = @request.perform
39
+ end
40
+
41
+ should "return array of mashes" do
42
+ @object.size.should == 20
43
+ @object.each { |obj| obj.class.should be(Mash) }
44
+ @object.first.text.should == 'Colder out today than expected. Headed to the Beanery for some morning wakeup drink. Latte or coffee...hmmm...'
45
+ end
46
+ end
47
+
48
+ context "performing a request for a single object" do
49
+ setup do
50
+ response = mock('response') do
51
+ stubs(:body).returns(fixture_file('status.json'))
52
+ stubs(:code).returns('200')
53
+ end
54
+
55
+ @client.expects(:get).returns(response)
56
+ @object = @request.perform
57
+ end
58
+
59
+ should "return a single mash" do
60
+ @object.class.should be(Mash)
61
+ @object.text.should == 'Rob Dyrdek is the funniest man alive. That is all.'
62
+ end
63
+ end
64
+
65
+ context "with no query string" do
66
+ should "not have any query string" do
67
+ request = Twitter::Request.new(@client, :get, '/statuses/user_timeline.json')
68
+ request.uri.should == '/statuses/user_timeline.json'
69
+ end
70
+ end
71
+
72
+ context "with blank query string" do
73
+ should "not have any query string" do
74
+ request = Twitter::Request.new(@client, :get, '/statuses/user_timeline.json', :query => {})
75
+ request.uri.should == '/statuses/user_timeline.json'
76
+ end
77
+ end
78
+
79
+ should "have get shortcut to initialize and perform all in one" do
80
+ Twitter::Request.any_instance.expects(:perform).returns(nil)
81
+ Twitter::Request.get(@client, '/foo')
82
+ end
83
+
84
+ should "allow setting query string and headers" do
85
+ response = mock('response') do
86
+ stubs(:body).returns('')
87
+ stubs(:code).returns('200')
88
+ end
89
+
90
+ @client.expects(:get).with('/statuses/friends_timeline.json?since_id=1234', {'Foo' => 'Bar'}).returns(response)
91
+ Twitter::Request.get(@client, '/statuses/friends_timeline.json?since_id=1234', :headers => {'Foo' => 'Bar'})
92
+ end
93
+ end
94
+
95
+ context "new post request" do
96
+ setup do
97
+ @client = mock('twitter client')
98
+ @request = Twitter::Request.new(@client, :post, '/statuses/update.json', {:body => {:status => 'Woohoo!'}})
99
+ end
100
+
101
+ should "allow setting body and headers" do
102
+ response = mock('response') do
103
+ stubs(:body).returns('')
104
+ stubs(:code).returns('200')
105
+ end
106
+
107
+ @client.expects(:post).with('/statuses/update.json', {:status => 'Woohoo!'}, {'Foo' => 'Bar'}).returns(response)
108
+ Twitter::Request.post(@client, '/statuses/update.json', :body => {:status => 'Woohoo!'}, :headers => {'Foo' => 'Bar'})
109
+ end
110
+
111
+ context "performing request" do
112
+ setup do
113
+ response = mock('response') do
114
+ stubs(:body).returns(fixture_file('status.json'))
115
+ stubs(:code).returns('200')
116
+ end
117
+
118
+ @client.expects(:post).returns(response)
119
+ @object = @request.perform
120
+ end
121
+
122
+ should "return a mash of the object" do
123
+ @object.text.should == 'Rob Dyrdek is the funniest man alive. That is all.'
124
+ end
125
+ end
126
+
127
+ should "have post shortcut to initialize and perform all in one" do
128
+ Twitter::Request.any_instance.expects(:perform).returns(nil)
129
+ Twitter::Request.post(@client, '/foo')
130
+ end
131
+ end
132
+
133
+ context "error raising" do
134
+ setup do
135
+ oauth = Twitter::OAuth.new('token', 'secret')
136
+ oauth.authorize_from_access('atoken', 'asecret')
137
+ @client = Twitter::Base.new(oauth)
138
+ end
139
+
140
+ should "not raise error for 200" do
141
+ stub_get('http://twitter.com:80/foo', '', ['200'])
142
+ lambda {
143
+ Twitter::Request.get(@client, '/foo')
144
+ }.should_not raise_error
145
+ end
146
+
147
+ should "not raise error for 304" do
148
+ stub_get('http://twitter.com:80/foo', '', ['304'])
149
+ lambda {
150
+ Twitter::Request.get(@client, '/foo')
151
+ }.should_not raise_error
152
+ end
153
+
154
+ should "raise RateLimitExceeded for 400" do
155
+ stub_get('http://twitter.com:80/foo', 'rate_limit_exceeded.json', ['400'])
156
+ lambda {
157
+ Twitter::Request.get(@client, '/foo')
158
+ }.should raise_error(Twitter::RateLimitExceeded)
159
+ end
160
+
161
+ should "raise Unauthorized for 401" do
162
+ stub_get('http://twitter.com:80/foo', '', ['401'])
163
+ lambda {
164
+ Twitter::Request.get(@client, '/foo')
165
+ }.should raise_error(Twitter::Unauthorized)
166
+ end
167
+
168
+ should "raise General for 403" do
169
+ stub_get('http://twitter.com:80/foo', '', ['403'])
170
+ lambda {
171
+ Twitter::Request.get(@client, '/foo')
172
+ }.should raise_error(Twitter::General)
173
+ end
174
+
175
+ should "raise NotFound for 404" do
176
+ stub_get('http://twitter.com:80/foo', '', ['404'])
177
+ lambda {
178
+ Twitter::Request.get(@client, '/foo')
179
+ }.should raise_error(Twitter::NotFound)
180
+ end
181
+
182
+ should "raise InformTwitter for 500" do
183
+ stub_get('http://twitter.com:80/foo', '', ['500'])
184
+ lambda {
185
+ Twitter::Request.get(@client, '/foo')
186
+ }.should raise_error(Twitter::InformTwitter)
187
+ end
188
+
189
+ should "raise Unavailable for 502" do
190
+ stub_get('http://twitter.com:80/foo', '', ['502'])
191
+ lambda {
192
+ Twitter::Request.get(@client, '/foo')
193
+ }.should raise_error(Twitter::Unavailable)
194
+ end
195
+
196
+ should "raise Unavailable for 503" do
197
+ stub_get('http://twitter.com:80/foo', '', ['503'])
198
+ lambda {
199
+ Twitter::Request.get(@client, '/foo')
200
+ }.should raise_error(Twitter::Unavailable)
201
+ end
202
+ end
203
+
204
+ context "Making request with mash option set to false" do
205
+ setup do
206
+ oauth = Twitter::OAuth.new('token', 'secret')
207
+ oauth.authorize_from_access('atoken', 'asecret')
208
+ @client = Twitter::Base.new(oauth)
209
+ end
210
+
211
+ should "not attempt to create mash of return object" do
212
+ stub_get('http://twitter.com:80/foo', 'friend_ids.json')
213
+ object = Twitter::Request.get(@client, '/foo', :mash => false)
214
+ object.class.should_not be(Mash)
215
+ end
216
+ end
217
+ end