t 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  require 'helper'
3
3
 
4
- describe T::CLI::Delete do
4
+ describe T::Delete do
5
5
 
6
6
  before do
7
7
  rcfile = RCFile.instance
@@ -85,7 +85,7 @@ describe T::CLI::Delete do
85
85
  @t.options = @t.options.merge(:force => false)
86
86
  end
87
87
  it "should request the correct resource" do
88
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the direct message to @hurrycane: \"Sounds good. Meeting Tuesday is fine.\"? ")
88
+ $stdout.should_receive(:print).with("Are you sure you want to permanently delete the direct message to @hurrycane: \"Sounds good. Meeting Tuesday is fine.\"? [y/N] ")
89
89
  $stdin.should_receive(:gets).and_return("yes")
90
90
  @t.delete("dm")
91
91
  a_get("/1/direct_messages/sent.json").
@@ -97,7 +97,7 @@ describe T::CLI::Delete do
97
97
  end
98
98
  context "yes" do
99
99
  it "should have the correct output" do
100
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the direct message to @hurrycane: \"Sounds good. Meeting Tuesday is fine.\"? ")
100
+ $stdout.should_receive(:print).with("Are you sure you want to permanently delete the direct message to @hurrycane: \"Sounds good. Meeting Tuesday is fine.\"? [y/N] ")
101
101
  $stdin.should_receive(:gets).and_return("yes")
102
102
  @t.delete("dm")
103
103
  $stdout.string.chomp.should == "@sferik deleted the direct message sent to @pengwynn: \"Creating a fixture for the Twitter gem\""
@@ -105,7 +105,7 @@ describe T::CLI::Delete do
105
105
  end
106
106
  context "no" do
107
107
  it "should have the correct output" do
108
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the direct message to @hurrycane: \"Sounds good. Meeting Tuesday is fine.\"? ")
108
+ $stdout.should_receive(:print).with("Are you sure you want to permanently delete the direct message to @hurrycane: \"Sounds good. Meeting Tuesday is fine.\"? [y/N] ")
109
109
  $stdin.should_receive(:gets).and_return("no")
110
110
  @t.delete("dm")
111
111
  $stdout.string.chomp.should == ""
@@ -118,76 +118,57 @@ describe T::CLI::Delete do
118
118
  describe "#favorite" do
119
119
  before do
120
120
  @t.options = @t.options.merge(:profile => fixture_path + "/.trc")
121
+ stub_delete("/1/favorites/destroy/28439861609.json").
122
+ with(:query => {:include_entities => "false"}).
123
+ to_return(:body => fixture("status.json"), :headers => {:content_type => "application/json; charset=utf-8"})
121
124
  end
122
- context "not found" do
125
+ context ":force => true" do
123
126
  before do
124
- stub_get("/1/favorites.json").
125
- with(:query => {:count => "1", :include_entities => "false"}).
126
- to_return(:body => "[]", :headers => {:content_type => "application/json; charset=utf-8"})
127
+ @t.options = @t.options.merge(:force => true)
127
128
  end
128
- it "should exit" do
129
- lambda do
130
- @t.delete("favorite")
131
- end.should raise_error(Thor::Error, "Tweet not found")
129
+ it "should request the correct resource" do
130
+ @t.delete("favorite", "28439861609")
131
+ a_delete("/1/favorites/destroy/28439861609.json").
132
+ with(:query => {:include_entities => "false"}).
133
+ should have_been_made
134
+ end
135
+ it "should have the correct output" do
136
+ @t.delete("favorite", "28439861609")
137
+ $stdout.string.should =~ /^@testcli unfavorited @sferik's status: \"@noradio working on implementing #NewTwitter API methods in the twitter gem\. Twurl is making it easy\. Thank you!\"$/
132
138
  end
133
139
  end
134
- context "found" do
140
+ context ":force => false" do
135
141
  before do
136
- stub_get("/1/favorites.json").
137
- with(:query => {:count => "1", :include_entities => "false"}).
138
- to_return(:body => fixture("favorites.json"), :headers => {:content_type => "application/json; charset=utf-8"})
139
- stub_delete("/1/favorites/destroy/28439861609.json").
140
- with(:query => {:include_entities => "false"}).
142
+ @t.options = @t.options.merge(:force => false)
143
+ stub_get("/1/statuses/show/28439861609.json").
144
+ with(:query => {:include_entities => "false", :include_my_retweet => "false", :trim_user => "true"}).
141
145
  to_return(:body => fixture("status.json"), :headers => {:content_type => "application/json; charset=utf-8"})
142
146
  end
143
- context ":force => true" do
144
- before do
145
- @t.options = @t.options.merge(:force => true)
146
- end
147
- it "should request the correct resource" do
148
- @t.delete("favorite")
149
- a_get("/1/favorites.json").
150
- with(:query => {:count => "1", :include_entities => "false"}).
151
- should have_been_made
152
- a_delete("/1/favorites/destroy/28439861609.json").
153
- with(:query => {:include_entities => "false"}).
154
- should have_been_made
155
- end
156
- it "should have the correct output" do
157
- @t.delete("favorite")
158
- $stdout.string.should =~ /^@testcli unfavorited @z's latest status: \"Spilled grilled onions on myself\. I smell delicious!\"$/
159
- end
147
+ it "should request the correct resource" do
148
+ $stdout.should_receive(:print).with("Are you sure you want to delete the favorite of @sferik's status: \"@noradio working on implementing #NewTwitter API methods in the twitter gem\. Twurl is making it easy\. Thank you!\"? [y/N] ")
149
+ $stdin.should_receive(:gets).and_return("yes")
150
+ @t.delete("favorite", "28439861609")
151
+ a_get("/1/statuses/show/28439861609.json").
152
+ with(:query => {:include_entities => "false", :include_my_retweet => "false", :trim_user => "true"}).
153
+ should have_been_made
154
+ a_delete("/1/favorites/destroy/28439861609.json").
155
+ with(:query => {:include_entities => "false"}).
156
+ should have_been_made
160
157
  end
161
- context ":force => false" do
162
- before do
163
- @t.options = @t.options.merge(:force => false)
164
- end
165
- it "should request the correct resource" do
166
- $stdout.should_receive(:print).with("Are you sure you want to delete the favorite of @z's latest status: \"Spilled grilled onions on myself. I smell delicious!\"? ")
158
+ context "yes" do
159
+ it "should have the correct output" do
160
+ $stdout.should_receive(:print).with("Are you sure you want to delete the favorite of @sferik's status: \"@noradio working on implementing #NewTwitter API methods in the twitter gem. Twurl is making it easy. Thank you!\"? [y/N] ")
167
161
  $stdin.should_receive(:gets).and_return("yes")
168
- @t.delete("favorite")
169
- a_get("/1/favorites.json").
170
- with(:query => {:count => "1", :include_entities => "false"}).
171
- should have_been_made
172
- a_delete("/1/favorites/destroy/28439861609.json").
173
- with(:query => {:include_entities => "false"}).
174
- should have_been_made
162
+ @t.delete("favorite", "28439861609")
163
+ $stdout.string.should =~ /^@testcli unfavorited @sferik's status: \"@noradio working on implementing #NewTwitter API methods in the twitter gem\. Twurl is making it easy\. Thank you!\"$/
175
164
  end
176
- context "yes" do
177
- it "should have the correct output" do
178
- $stdout.should_receive(:print).with("Are you sure you want to delete the favorite of @z's latest status: \"Spilled grilled onions on myself. I smell delicious!\"? ")
179
- $stdin.should_receive(:gets).and_return("yes")
180
- @t.delete("favorite")
181
- $stdout.string.should =~ /^@testcli unfavorited @z's latest status: \"Spilled grilled onions on myself\. I smell delicious!\"$/
182
- end
183
- end
184
- context "no" do
185
- it "should have the correct output" do
186
- $stdout.should_receive(:print).with("Are you sure you want to delete the favorite of @z's latest status: \"Spilled grilled onions on myself. I smell delicious!\"? ")
187
- $stdin.should_receive(:gets).and_return("no")
188
- @t.delete("favorite")
189
- $stdout.string.chomp.should == ""
190
- end
165
+ end
166
+ context "no" do
167
+ it "should have the correct output" do
168
+ $stdout.should_receive(:print).with("Are you sure you want to delete the favorite of @sferik's status: \"@noradio working on implementing #NewTwitter API methods in the twitter gem. Twurl is making it easy. Thank you!\"? [y/N] ")
169
+ $stdin.should_receive(:gets).and_return("no")
170
+ @t.delete("favorite", "28439861609")
171
+ $stdout.string.chomp.should == ""
191
172
  end
192
173
  end
193
174
  end
@@ -224,7 +205,7 @@ describe T::CLI::Delete do
224
205
  @t.options = @t.options.merge(:force => false)
225
206
  end
226
207
  it "should request the correct resource" do
227
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? ")
208
+ $stdout.should_receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? [y/N] ")
228
209
  $stdin.should_receive(:gets).and_return("yes")
229
210
  @t.delete("list", "presidents")
230
211
  a_get("/1/account/verify_credentials.json").
@@ -235,7 +216,7 @@ describe T::CLI::Delete do
235
216
  end
236
217
  context "yes" do
237
218
  it "should have the correct output" do
238
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? ")
219
+ $stdout.should_receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? [y/N] ")
239
220
  $stdin.should_receive(:gets).and_return("yes")
240
221
  @t.delete("list", "presidents")
241
222
  $stdout.string.chomp.should == "@testcli deleted the list \"presidents\"."
@@ -243,7 +224,7 @@ describe T::CLI::Delete do
243
224
  end
244
225
  context "no" do
245
226
  it "should have the correct output" do
246
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? ")
227
+ $stdout.should_receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? [y/N] ")
247
228
  $stdin.should_receive(:gets).and_return("no")
248
229
  @t.delete("list", "presidents")
249
230
  $stdout.string.chomp.should == ""
@@ -255,76 +236,57 @@ describe T::CLI::Delete do
255
236
  describe "#status" do
256
237
  before do
257
238
  @t.options = @t.options.merge(:profile => fixture_path + "/.trc")
239
+ stub_delete("/1/statuses/destroy/26755176471724032.json").
240
+ with(:query => {:include_entities => "false", :trim_user => "true"}).
241
+ to_return(:body => fixture("status.json"), :headers => {:content_type => "application/json; charset=utf-8"})
258
242
  end
259
- context "not found" do
243
+ context ":force => true" do
260
244
  before do
261
- stub_get("/1/account/verify_credentials.json").
262
- with(:query => {:include_entities => "false"}).
263
- to_return(:body => "{}", :headers => {:content_type => "application/json; charset=utf-8"})
245
+ @t.options = @t.options.merge(:force => true)
264
246
  end
265
- it "should exit" do
266
- lambda do
267
- @t.delete("status")
268
- end.should raise_error(Thor::Error, "Tweet not found")
247
+ it "should request the correct resource" do
248
+ @t.delete("status", "26755176471724032")
249
+ a_delete("/1/statuses/destroy/26755176471724032.json").
250
+ with(:query => {:include_entities => "false", :trim_user => "true"}).
251
+ should have_been_made
252
+ end
253
+ it "should have the correct output" do
254
+ @t.delete("status", "26755176471724032")
255
+ $stdout.string.chomp.should == "@testcli deleted the status: \"@noradio working on implementing #NewTwitter API methods in the twitter gem. Twurl is making it easy. Thank you!\""
269
256
  end
270
257
  end
271
- context "found" do
258
+ context ":force => false" do
272
259
  before do
273
- stub_get("/1/account/verify_credentials.json").
274
- with(:query => {:include_entities => "false"}).
275
- to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
276
- stub_delete("/1/statuses/destroy/26755176471724032.json").
277
- with(:query => {:include_entities => "false", :trim_user => "true"}).
260
+ @t.options = @t.options.merge(:force => false)
261
+ stub_get("/1/statuses/show/26755176471724032.json").
262
+ with(:query => {:include_entities => "false", :include_my_retweet => "false", :trim_user => "true"}).
278
263
  to_return(:body => fixture("status.json"), :headers => {:content_type => "application/json; charset=utf-8"})
279
264
  end
280
- context ":force => true" do
281
- before do
282
- @t.options = @t.options.merge(:force => true)
283
- end
284
- it "should request the correct resource" do
285
- @t.delete("status")
286
- a_get("/1/account/verify_credentials.json").
287
- with(:query => {:include_entities => "false"}).
288
- should have_been_made
289
- a_delete("/1/statuses/destroy/26755176471724032.json").
290
- with(:query => {:include_entities => "false", :trim_user => "true"}).
291
- should have_been_made
292
- end
265
+ it "should request the correct resource" do
266
+ $stdout.should_receive(:print).with("Are you sure you want to permanently delete @sferik's status: \"@noradio working on implementing #NewTwitter API methods in the twitter gem. Twurl is making it easy. Thank you!\"? [y/N] ")
267
+ $stdin.should_receive(:gets).and_return("yes")
268
+ @t.delete("status", "26755176471724032")
269
+ a_get("/1/statuses/show/26755176471724032.json").
270
+ with(:query => {:include_entities => "false", :include_my_retweet => "false", :trim_user => "true"}).
271
+ should have_been_made
272
+ a_delete("/1/statuses/destroy/26755176471724032.json").
273
+ with(:query => {:include_entities => "false", :trim_user => "true"}).
274
+ should have_been_made
275
+ end
276
+ context "yes" do
293
277
  it "should have the correct output" do
294
- @t.delete("status")
278
+ $stdout.should_receive(:print).with("Are you sure you want to permanently delete @sferik's status: \"@noradio working on implementing #NewTwitter API methods in the twitter gem. Twurl is making it easy. Thank you!\"? [y/N] ")
279
+ $stdin.should_receive(:gets).and_return("yes")
280
+ @t.delete("status", "26755176471724032")
295
281
  $stdout.string.chomp.should == "@testcli deleted the status: \"@noradio working on implementing #NewTwitter API methods in the twitter gem. Twurl is making it easy. Thank you!\""
296
282
  end
297
283
  end
298
- context ":force => false" do
299
- before do
300
- @t.options = @t.options.merge(:force => false)
301
- end
302
- it "should request the correct resource" do
303
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete @testcli's latest status: \"RT @tenderlove: [ANN] sqlite3-ruby => sqlite3\"? ")
304
- $stdin.should_receive(:gets).and_return("yes")
305
- @t.delete("status")
306
- a_get("/1/account/verify_credentials.json").
307
- with(:query => {:include_entities => "false"}).
308
- should have_been_made
309
- a_delete("/1/statuses/destroy/26755176471724032.json").
310
- with(:query => {:include_entities => "false", :trim_user => "true"}).
311
- should have_been_made
312
- end
313
- context "yes" do
314
- it "should have the correct output" do
315
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete @testcli's latest status: \"RT @tenderlove: [ANN] sqlite3-ruby => sqlite3\"? ")
316
- $stdin.should_receive(:gets).and_return("yes")
317
- @t.delete("status")
318
- $stdout.string.chomp.should == "@testcli deleted the status: \"@noradio working on implementing #NewTwitter API methods in the twitter gem. Twurl is making it easy. Thank you!\""
319
- end
320
- end
321
- context "no" do
322
- it "should have the correct output" do
323
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete @testcli's latest status: \"RT @tenderlove: [ANN] sqlite3-ruby => sqlite3\"? ")
324
- $stdin.should_receive(:gets).and_return("no")
325
- @t.delete("status")
326
- $stdout.string.chomp.should == ""
327
- end
284
+ context "no" do
285
+ it "should have the correct output" do
286
+ $stdout.should_receive(:print).with("Are you sure you want to permanently delete @sferik's status: \"@noradio working on implementing #NewTwitter API methods in the twitter gem. Twurl is making it easy. Thank you!\"? [y/N] ")
287
+ $stdin.should_receive(:gets).and_return("no")
288
+ @t.delete("status", "26755176471724032")
289
+ $stdout.string.chomp.should == ""
328
290
  end
329
291
  end
330
292
  end
@@ -1 +1 @@
1
- [{"user":{"time_zone":"Eastern Time (US & Canada)","protected":false,"default_profile":true,"profile_use_background_image":true,"name":"John Trupiano","contributors_enabled":false,"created_at":"Sun May 11 19:46:06 +0000 2008","profile_background_color":"C0DEED","listed_count":99,"profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":-18000,"description":"Owner of @smartlogic. I tweet a mixed stream of incoherence and inside jokes. My tweets make me laugh; your mileage will vary.","verified":false,"profile_image_url":"http:\/\/a2.twimg.com\/profile_images\/627637055\/thumb_gravatar_normal.jpg","id_str":"14736332","lang":"en","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","favourites_count":117,"profile_text_color":"333333","status":{"truncated":false,"created_at":"Sat Aug 20 03:27:22 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"104756380472324096","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/twitter.com\/#!\/download\/iphone\" rel=\"nofollow\"\u003ETwitter for iPhone\u003C\/a\u003E","id":104756380472324096,"text":"Jimmy Johns: the best place to go right after getting pepper sprayed."},"friends_count":545,"profile_sidebar_fill_color":"DDEEF6","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/627637055\/thumb_gravatar_normal.jpg","screen_name":"jtrupiano","default_profile_image":false,"show_all_inline_media":false,"geo_enabled":false,"profile_background_tile":false,"location":"Baltimore, MD","notifications":null,"is_translator":false,"profile_link_color":"0084B4","url":"http:\/\/smartlogicsolutions.com\/john","id":14736332,"follow_request_sent":null,"statuses_count":3850,"following":null,"profile_sidebar_border_color":"C0DEED","followers_count":802},"token":"1"},{"user":{"follow_request_sent":false,"time_zone":"Pacific Time (US & Canada)","protected":false,"profile_use_background_image":true,"name":"Matt Laroche","created_at":"Sun Apr 20 12:05:38 +0000 2008","profile_background_color":"C6E2EE","show_all_inline_media":false,"contributors_enabled":false,"geo_enabled":true,"profile_background_image_url":"http:\/\/a1.twimg.com\/images\/themes\/theme2\/bg.gif","utc_offset":-28800,"description":"Software engineer, beer advocate, Palo Altan, husband.","listed_count":20,"verified":false,"profile_image_url":"http:\/\/a3.twimg.com\/profile_images\/1255024245\/banana_reasonably_small_normal.jpg","id_str":"14451152","lang":"en","favourites_count":10,"profile_text_color":"663B12","status":{"truncated":false,"created_at":"Sun Aug 21 20:59:41 +0000 2011","geo":{"type":"Point","coordinates":[33.8043296,-117.9226607]},"in_reply_to_user_id":20113974,"in_reply_to_status_id":105382259623854081,"favorited":false,"in_reply_to_status_id_str":"105382259623854081","coordinates":{"type":"Point","coordinates":[-117.9226607,33.8043296]},"id_str":"105383592376537088","in_reply_to_screen_name":"chasesterling","in_reply_to_user_id_str":"20113974","place":{"country_code":"US","name":"Anaheim","attributes":{},"full_name":"Anaheim, CA","place_type":"city","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-118.017597,33.788835],[-117.674604,33.788835],[-117.674604,33.881456],[-118.017597,33.881456]]]},"id":"0c2e6999105f8070","url":"http:\/\/api.twitter.com\/1\/geo\/id\/0c2e6999105f8070.json"},"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003ETwitter for Android\u003C\/a\u003E","id":105383592376537088,"text":"@chasesterling sadly in a fake vending machine at the Monsters Inc ride at Disney's California Adventure."},"statuses_count":6251,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme2\/bg.gif","profile_sidebar_fill_color":"DAECF4","screen_name":"mlroach","profile_background_tile":false,"friends_count":403,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1255024245\/banana_reasonably_small_normal.jpg","location":"Palo Alto, California","default_profile_image":false,"notifications":false,"default_profile":false,"profile_link_color":"1F98C7","url":null,"id":14451152,"is_translator":false,"following":false,"profile_sidebar_border_color":"C6E2EE","followers_count":299},"token":"21"},{"user":{"follow_request_sent":false,"statuses_count":183,"time_zone":"Greenland","protected":false,"profile_use_background_image":true,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/121725893\/3136259685_ed14d06774.jpg","name":"AntonioPires","created_at":"Sat May 16 18:24:33 +0000 2009","profile_background_color":"000000","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/121725893\/3136259685_ed14d06774.jpg","utc_offset":-10800,"description":"","listed_count":2,"contributors_enabled":false,"verified":false,"geo_enabled":true,"profile_image_url":"http:\/\/a2.twimg.com\/profile_images\/1067377349\/s_normal.jpg","id_str":"40514587","lang":"en","favourites_count":2,"profile_text_color":"828282","status":{"truncated":false,"created_at":"Mon Jun 13 16:27:31 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"possibly_sensitive":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"80310340704931840","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"web","id":80310340704931840,"text":"Estou concorrendo a 1 ingresso do Alexandre Wollner no Rio \u2013 http:\/\/t.co\/QlJZUqF Siga @design_blog e @pensoeventos e d\u00ea RT!"},"show_all_inline_media":false,"profile_sidebar_fill_color":"1c1c1c","screen_name":"antpires","profile_background_tile":false,"location":"Rio","default_profile_image":false,"notifications":false,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1067377349\/s_normal.jpg","friends_count":198,"profile_link_color":"e86f6f","url":"http:\/\/antpires.carbonmade.com","id":40514587,"is_translator":false,"default_profile":false,"following":false,"profile_sidebar_border_color":"000000","followers_count":158},"token":"14"},{"user":{"time_zone":"London","protected":false,"follow_request_sent":false,"profile_use_background_image":true,"name":"Alex MacCaw","created_at":"Fri Mar 23 12:36:14 +0000 2007","profile_background_color":"9ae4e8","contributors_enabled":false,"profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":0,"description":"Ruby\/JavaScript developer, O'Reilly author and entrepreneur. ","default_profile":false,"verified":false,"profile_image_url":"http:\/\/a1.twimg.com\/profile_images\/1081483457\/Gravatar_for_info_eribium_normal.jpeg","id_str":"2006261","listed_count":171,"lang":"en","favourites_count":9,"profile_text_color":"000000","status":{"truncated":false,"created_at":"Sun Aug 21 23:54:01 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"possibly_sensitive":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"105427467593981952","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/twitter.com\/tweetbutton\" rel=\"nofollow\"\u003ETweet Button\u003C\/a\u003E","id":105427467593981952,"text":"Visualizing WebKit's hardware acceleration http:\/\/t.co\/nX5pvPl via @thomasfuchs"},"profile_sidebar_fill_color":"e0ff92","screen_name":"maccman","show_all_inline_media":false,"geo_enabled":true,"profile_background_tile":false,"location":"London","notifications":false,"is_translator":false,"default_profile_image":false,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","profile_link_color":"0000ff","url":"http:\/\/alexmaccaw.co.uk","id":2006261,"statuses_count":4497,"following":false,"friends_count":967,"profile_sidebar_border_color":"87bc44","followers_count":2028,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1081483457\/Gravatar_for_info_eribium_normal.jpeg"},"token":"11"},{"user":{"follow_request_sent":false,"statuses_count":24,"time_zone":"Pacific Time (US & Canada)","protected":false,"profile_use_background_image":true,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","name":"stuntmann82","created_at":"Sat Aug 30 08:22:57 +0000 2008","profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":-28800,"description":"","listed_count":1,"contributors_enabled":false,"verified":false,"geo_enabled":false,"profile_image_url":"http:\/\/a1.twimg.com\/profile_images\/249396146\/images_normal.jpg","id_str":"16052754","lang":"en","favourites_count":0,"profile_text_color":"333333","status":{"truncated":false,"created_at":"Wed Nov 25 06:20:05 +0000 2009","geo":null,"in_reply_to_user_id":2889221,"in_reply_to_status_id":null,"favorited":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"6042752864","in_reply_to_screen_name":"vitaminjeff","in_reply_to_user_id_str":"2889221","place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/www.tweetdeck.com\/\" rel=\"nofollow\"\u003ETweetDeck\u003C\/a\u003E","id":6042752864,"text":"@vitaminjeff Sup bro!"},"show_all_inline_media":false,"profile_sidebar_fill_color":"DDEEF6","screen_name":"stuntmann82","profile_background_tile":false,"location":"","default_profile_image":false,"notifications":false,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/249396146\/images_normal.jpg","friends_count":5,"profile_link_color":"0084B4","url":null,"id":16052754,"is_translator":false,"default_profile":true,"following":false,"profile_sidebar_border_color":"C0DEED","followers_count":42},"token":"14"},{"user":{"listed_count":921,"time_zone":"Alaska","protected":false,"profile_use_background_image":false,"name":"Loren Brichter","show_all_inline_media":true,"geo_enabled":true,"created_at":"Sun Nov 04 17:48:57 +0000 2007","profile_background_color":"1A1B1F","expanded_url":null,"profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":-32400,"description":"meat popsicle","display_url":null,"default_profile_image":false,"verified":false,"profile_image_url":"http:\/\/a3.twimg.com\/profile_images\/1054030005\/hello_normal.png","id_str":"9943672","entities":{"user_mentions":[],"urls":[],"hashtags":[]},"lang":"en","statuses_count":1092,"favourites_count":197,"friends_count":127,"profile_text_color":"666666","status":{"truncated":false,"created_at":"Tue Aug 16 20:43:45 +0000 2011","geo":null,"in_reply_to_user_id":15048963,"in_reply_to_status_id":103567401634897920,"favorited":false,"in_reply_to_status_id_str":"103567401634897920","coordinates":null,"id_str":"103567644837429250","in_reply_to_screen_name":"jboley","in_reply_to_user_id_str":"15048963","place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/itunes.apple.com\/us\/app\/twitter\/id409789998?mt=12\" rel=\"nofollow\"\u003ETwitter for Mac\u003C\/a\u003E","id":103567644837429250,"text":"@jboley could swap out the backend, base TwUI right on top of GL, then we could go nuts."},"is_translator":false,"profile_sidebar_fill_color":"252429","screen_name":"lorenb","follow_request_sent":null,"contributors_enabled":false,"profile_background_tile":false,"location":"Philly","notifications":null,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","default_profile":false,"profile_link_color":"2FC2EF","url":null,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1054030005\/hello_normal.png","id":9943672,"following":null,"profile_sidebar_border_color":"181A1E","followers_count":13101},"token":"22"},{"user":{"time_zone":"Pacific Time (US & Canada)","protected":false,"profile_use_background_image":true,"name":"Craig Hockenberry","default_profile":false,"contributors_enabled":false,"created_at":"Sat Dec 02 03:11:33 +0000 2006","profile_background_color":"CD3300","listed_count":1180,"profile_background_image_url":"http:\/\/a2.twimg.com\/profile_background_images\/17652\/Untitled-1.jpg","utc_offset":-28800,"description":"HAD THE IDEA FOR TWITTERRIFIC IN THE SHOWER","verified":false,"profile_image_url":"http:\/\/a3.twimg.com\/profile_images\/838441522\/P9010020_normal.jpg","id_str":"36183","lang":"en","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/17652\/Untitled-1.jpg","favourites_count":1774,"profile_text_color":"000000","status":{"truncated":false,"created_at":"Thu Aug 18 15:10:58 +0000 2011","geo":null,"in_reply_to_user_id":7440462,"in_reply_to_status_id":104193896204075010,"favorited":false,"in_reply_to_status_id_str":"104193896204075010","coordinates":null,"id_str":"104208673303310337","in_reply_to_screen_name":"drance","in_reply_to_user_id_str":"7440462","place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/twitterrific.com\" rel=\"nofollow\"\u003ETwitterrific for Mac\u003C\/a\u003E","id":104208673303310337,"text":"@drance $20 x 12 > cost of an iPhone 5"},"friends_count":412,"profile_sidebar_fill_color":"DAFFBE","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/838441522\/P9010020_normal.jpg","screen_name":"chockenberry","default_profile_image":false,"show_all_inline_media":true,"geo_enabled":false,"profile_background_tile":true,"location":"Laguna Beach, CA, USA","notifications":false,"is_translator":false,"profile_link_color":"8C3500","url":"http:\/\/furbo.org","id":36183,"follow_request_sent":false,"statuses_count":17036,"following":false,"profile_sidebar_border_color":"A6CD89","followers_count":12386},"token":"24"},{"user":{"is_translator":false,"show_all_inline_media":false,"geo_enabled":false,"time_zone":"Eastern Time (US & Canada)","protected":false,"follow_request_sent":false,"profile_use_background_image":true,"name":"Mike Dalessio","contributors_enabled":false,"created_at":"Fri May 02 14:52:50 +0000 2008","profile_background_color":"C0DEED","statuses_count":658,"profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":-18000,"description":"Rubyist, Pragmatist, Optimist, One Trick Pony. Co-author of Nokogiri. Superpowers: none (yet).\r\n","verified":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1167926691\/nokogiri-mother-1-crop_normal.png","id_str":"14626544","listed_count":28,"lang":"en","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","favourites_count":255,"profile_text_color":"333333","status":{"truncated":false,"created_at":"Wed Aug 17 22:18:33 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"possibly_sensitive":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"103953891397345280","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":9,"source":"web","retweeted_status":{"truncated":false,"created_at":"Wed Aug 17 21:44:08 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"possibly_sensitive":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"103945228565757952","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":9,"source":"\u003Ca href=\"http:\/\/timely.is\" rel=\"nofollow\"\u003ETimely App\u003C\/a\u003E","id":103945228565757952,"text":"SSH Can Do That? Productivity Tips for Working with Remote Servers http:\/\/t.co\/F2X0gnq <- lots of good SSH tricks"},"id":103953891397345280,"text":"RT @assaf: SSH Can Do That? Productivity Tips for Working with Remote Servers http:\/\/t.co\/F2X0gnq <- lots of good SSH tricks"},"default_profile":true,"profile_sidebar_fill_color":"DDEEF6","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1167926691\/nokogiri-mother-1-crop_normal.png","screen_name":"flavorjones","profile_background_tile":false,"location":"NYC \/ NJ","notifications":false,"friends_count":351,"default_profile_image":false,"profile_link_color":"0084B4","url":"http:\/\/mike.daless.io\/","id":14626544,"following":false,"profile_sidebar_border_color":"C0DEED","followers_count":375},"token":"1"},{"user":{"time_zone":"Pacific Time (US & Canada)","protected":false,"show_all_inline_media":false,"contributors_enabled":false,"geo_enabled":true,"profile_use_background_image":false,"name":"GovFresh","listed_count":633,"created_at":"Sat May 02 22:19:00 +0000 2009","profile_background_color":"ffffff","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":-28800,"description":"Gov 2.0, open gov news, guides, TV, tech, people. Open air government. (@lukefretwell)","statuses_count":7419,"verified":false,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/291447950\/icon_normal.png","id_str":"37296570","lang":"en","favourites_count":69,"friends_count":205,"profile_text_color":"333333","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/291447950\/icon_normal.png","status":{"truncated":false,"created_at":"Mon Aug 22 02:00:14 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"possibly_sensitive":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"105459232068993024","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/www.tweetdeck.com\" rel=\"nofollow\"\u003ETweetDeck\u003C\/a\u003E","id":105459232068993024,"text":"RT @adrielhampton: Mention on #g2r: Kundra: Closing IT gap is key to making gov't work better for the American people http:\/\/t.co\/4vywBK0"},"default_profile_image":false,"profile_sidebar_fill_color":"ffffff","screen_name":"govfresh","profile_background_tile":false,"location":"USA","is_translator":false,"notifications":false,"default_profile":false,"follow_request_sent":false,"profile_link_color":"006699","url":"http:\/\/www.govfresh.com","id":37296570,"following":false,"profile_sidebar_border_color":"ffffff","followers_count":4770},"token":"1"},{"user":{"default_profile":false,"profile_background_color":"1A1B1F","protected":false,"show_all_inline_media":false,"contributors_enabled":false,"geo_enabled":true,"profile_background_image_url":"http:\/\/a1.twimg.com\/images\/themes\/theme9\/bg.gif","name":"Ola Bini","listed_count":446,"created_at":"Mon Jul 23 19:05:23 +0000 2007","id_str":"7665302","utc_offset":3600,"favourites_count":2,"profile_text_color":"666666","description":"Programming language nerd, JRuby core developer, language designer (Ioke), lisp and ruby fanatic.","statuses_count":8222,"verified":false,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme9\/bg.gif","profile_sidebar_fill_color":"252429","profile_image_url":"http:\/\/a3.twimg.com\/profile_images\/52551367\/ONormal_normal.jpg","lang":"en","profile_background_tile":false,"friends_count":204,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/52551367\/ONormal_normal.jpg","status":{"truncated":false,"in_reply_to_user_id":null,"favorited":false,"in_reply_to_status_id_str":null,"created_at":"Sun Aug 21 02:29:20 +0000 2011","id_str":"105104165822410752","geo":{"type":"Point","coordinates":[41.90894375,-87.67776878]},"in_reply_to_screen_name":null,"in_reply_to_status_id":null,"in_reply_to_user_id_str":null,"coordinates":{"type":"Point","coordinates":[-87.67776878,41.90894375]},"contributors":null,"retweeted":false,"place":{"place_type":"city","country_code":"US","name":"Chicago","attributes":{},"full_name":"Chicago, IL","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-87.940101,41.644582],[-87.523661,41.644582],[-87.523661,42.023019],[-87.940101,42.023019]]]},"id":"1d9a5370a355ab0c","url":"http:\/\/api.twitter.com\/1\/geo\/id\/1d9a5370a355ab0c.json"},"retweet_count":0,"source":"\u003Ca href=\"http:\/\/www.tweetdeck.com\" rel=\"nofollow\"\u003ETweetDeck\u003C\/a\u003E","id":105104165822410752,"text":"Tonight the violet hour with lots of friends"},"default_profile_image":false,"screen_name":"olabini","profile_link_color":"2FC2EF","location":"iPhone: 40.755951,-73.968864","is_translator":false,"notifications":false,"profile_sidebar_border_color":"181A1E","follow_request_sent":false,"time_zone":"Stockholm","url":"http:\/\/olabini.com\/blog","id":7665302,"following":false,"profile_use_background_image":true,"followers_count":4905},"token":"1"},{"user":{"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme9\/bg.gif","time_zone":"Pacific Time (US & Canada)","protected":false,"profile_use_background_image":true,"friends_count":31485,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1408709905\/at-twitter_bigger_normal.png","name":"Spam Watch","default_profile_image":false,"created_at":"Tue Apr 29 19:55:39 +0000 2008","profile_background_color":"1A1B1F","expanded_url":null,"profile_background_image_url":"http:\/\/a1.twimg.com\/images\/themes\/theme9\/bg.gif","utc_offset":-28800,"description":"Suspect Twitter spam? Let us know (http:\/\/bit.ly\/Tweport)! Follow @spam & @safety for helpful info, and check out our favorite tips: http:\/\/bit.ly\/spamfav","display_url":null,"is_translator":false,"show_all_inline_media":false,"verified":true,"geo_enabled":false,"profile_image_url":"http:\/\/a3.twimg.com\/profile_images\/1408709905\/at-twitter_bigger_normal.png","id_str":"14589771","entities":{"user_mentions":[{"name":"Spam Watch","indices":[67,72],"id_str":"14589771","screen_name":"spam","id":14589771},{"name":"Safety","indices":[75,82],"id_str":"95731075","screen_name":"safety","id":95731075}],"urls":[{"expanded_url":null,"indices":[35,56],"url":"http:\/\/bit.ly\/Tweport"},{"expanded_url":null,"indices":[134,155],"url":"http:\/\/bit.ly\/spamfav"}],"hashtags":[]},"follow_request_sent":false,"lang":"en","favourites_count":13,"profile_text_color":"888888","status":{"truncated":false,"created_at":"Thu Aug 18 17:59:14 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"104251017306185728","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":"100+","source":"web","retweeted_status":{"truncated":false,"created_at":"Thu Aug 18 17:58:29 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"104250831292993536","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":[139769125],"retweeted":false,"retweet_count":"100+","source":"web","id":104250831292993536,"text":"Seeing Tweets that you need to sign a petition to keep Twitter free? Don't click. It's fake and will steal your password."},"id":104251017306185728,"text":"RT @safety: Seeing Tweets that you need to sign a petition to keep Twitter free? Don't click. It's fake and will steal your password."},"default_profile":false,"profile_sidebar_fill_color":"252429","screen_name":"spam","statuses_count":166,"profile_background_tile":false,"location":"Twitter HQ","contributors_enabled":true,"notifications":false,"listed_count":8679,"profile_link_color":"2FC2EF","url":"http:\/\/help.twitter.com\/entries\/64986","id":14589771,"following":false,"profile_sidebar_border_color":"181A1E","followers_count":627222},"token":"22"},{"user":{"time_zone":"Eastern Time (US & Canada)","protected":false,"profile_use_background_image":true,"name":"Ethan Marcotte","contributors_enabled":false,"created_at":"Wed Nov 15 15:59:51 +0000 2006","profile_background_color":"121212","listed_count":1460,"profile_background_image_url":"http:\/\/a1.twimg.com\/profile_background_images\/224737148\/clint.jpg","utc_offset":-18000,"description":"Designer, developer. Started that whole \u201cresponsive web design\u201d thing.\r\n\r\n\u201cEight? Who taught you math?\u201d","verified":false,"profile_image_url":"http:\/\/a1.twimg.com\/profile_images\/1266637465\/sammy-boy_normal.png","id_str":"12534","default_profile":false,"lang":"en","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/224737148\/clint.jpg","favourites_count":25929,"profile_text_color":"000000","status":{"truncated":false,"created_at":"Sun Aug 21 17:04:59 +0000 2011","geo":null,"in_reply_to_user_id":14318544,"in_reply_to_status_id":105321846462889984,"favorited":false,"in_reply_to_status_id_str":"105321846462889984","coordinates":null,"id_str":"105324529127137280","in_reply_to_screen_name":"blissbat","in_reply_to_user_id_str":"14318544","place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/twitterrific.com\" rel=\"nofollow\"\u003ETwitterrific\u003C\/a\u003E","id":105324529127137280,"text":"@blissbat Oh my god. That is lovely. (And positively Templesmithian.)"},"friends_count":398,"profile_sidebar_fill_color":"7D7D7D","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1266637465\/sammy-boy_normal.png","screen_name":"beep","default_profile_image":false,"show_all_inline_media":true,"geo_enabled":false,"profile_background_tile":true,"location":"Cambridge, MA","notifications":false,"is_translator":false,"profile_link_color":"990000","url":"http:\/\/ethanmarcotte.com\/","id":12534,"follow_request_sent":false,"statuses_count":10490,"following":false,"profile_sidebar_border_color":"7D7D7D","followers_count":16264},"token":"22"},{"user":{"follow_request_sent":false,"time_zone":"Central Time (US & Canada)","protected":false,"profile_use_background_image":true,"name":"John Clay","created_at":"Sat Mar 14 05:19:35 +0000 2009","profile_background_color":"000000","show_all_inline_media":false,"contributors_enabled":false,"geo_enabled":false,"profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/7637392\/twitterbg1.jpg","utc_offset":-21600,"description":"1 Part Artist, 1 Part Geek, With a Splash of Pop Culture","listed_count":6,"verified":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1112575277\/41220_579052302952_57100648_33412341_4990242_n_normal.jpg","id_str":"24334548","default_profile":false,"lang":"en","favourites_count":2,"profile_text_color":"32332e","status":{"truncated":false,"created_at":"Wed Jul 27 04:23:15 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"possibly_sensitive":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"96073136679825409","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"web","id":96073136679825409,"text":"http:\/\/t.co\/MKMlBcQ Well played @OldSpice - My vote is for #teamoldspiceguy. The writers and marketing team deserve a raise."},"statuses_count":477,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/7637392\/twitterbg1.jpg","profile_sidebar_fill_color":"8c8c88","screen_name":"Clayjm","profile_background_tile":false,"friends_count":103,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1112575277\/41220_579052302952_57100648_33412341_4990242_n_normal.jpg","location":"Missouri","default_profile_image":false,"notifications":false,"profile_link_color":"c6c09f","url":null,"id":24334548,"is_translator":false,"following":false,"profile_sidebar_border_color":"181A1E","followers_count":305},"token":"14"},{"user":{"default_profile":false,"time_zone":"Eastern Time (US & Canada)","protected":false,"profile_use_background_image":true,"name":"KaT","show_all_inline_media":false,"listed_count":1,"geo_enabled":false,"created_at":"Sat Mar 17 01:08:54 +0000 2007","profile_background_color":"1A1B1F","contributors_enabled":false,"profile_background_image_url":"http:\/\/a1.twimg.com\/images\/themes\/theme9\/bg.gif","utc_offset":-18000,"description":"","verified":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1496023849\/Clipboard01_normal.jpg","id_str":"1325781","lang":"en","statuses_count":1091,"favourites_count":0,"friends_count":71,"profile_text_color":"666666","status":{"truncated":false,"created_at":"Thu Aug 18 20:57:06 +0000 2011","geo":null,"in_reply_to_user_id":251147079,"in_reply_to_status_id":104281588854030336,"favorited":false,"in_reply_to_status_id_str":"104281588854030336","coordinates":null,"id_str":"104295781024010240","in_reply_to_screen_name":"zImperium","in_reply_to_user_id_str":"251147079","place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003ETwitter for Android\u003C\/a\u003E","id":104295781024010240,"text":"@zImperium when will this be on the market since this is a closed beta ?"},"default_profile_image":false,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme9\/bg.gif","profile_sidebar_fill_color":"252429","screen_name":"katzworld","profile_background_tile":false,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1496023849\/Clipboard01_normal.jpg","location":"MD,USA","is_translator":false,"notifications":false,"follow_request_sent":false,"profile_link_color":"2FC2EF","url":null,"id":1325781,"following":false,"profile_sidebar_border_color":"181A1E","followers_count":269},"token":"14"},{"user":{"time_zone":"Central Time (US & Canada)","protected":true,"listed_count":2,"statuses_count":47,"profile_use_background_image":true,"name":"Angelika Biteme","contributors_enabled":false,"created_at":"Tue Jun 09 09:54:31 +0000 2009","profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":-21600,"description":"Because I am addictted to Spymaster & can't go up any more levels, I started a new account. I admitted the addiction. Now I need an intervention.","verified":false,"friends_count":375,"profile_image_url":"http:\/\/a0.twimg.com\/sticky\/default_profile_images\/default_profile_5_normal.png","id_str":"45805107","default_profile_image":true,"lang":"en","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","favourites_count":0,"profile_text_color":"333333","default_profile":true,"profile_sidebar_fill_color":"DDEEF6","profile_image_url_https":"https:\/\/si0.twimg.com\/sticky\/default_profile_images\/default_profile_5_normal.png","screen_name":"AngelikaSpy","is_translator":false,"show_all_inline_media":false,"profile_background_tile":false,"location":"Um, the computer desk. Duh.","follow_request_sent":false,"notifications":false,"profile_link_color":"0084B4","url":"http:\/\/angelika1972.blogspot.com\/","id":45805107,"following":false,"geo_enabled":false,"profile_sidebar_border_color":"C0DEED","followers_count":131},"token":"14"},{"user":{"time_zone":"Alaska","protected":false,"profile_use_background_image":true,"name":"LikeMinded","contributors_enabled":false,"created_at":"Fri Oct 29 23:32:48 +0000 2010","profile_background_color":"C0DEED","default_profile":false,"listed_count":26,"profile_background_image_url":"http:\/\/a3.twimg.com\/profile_background_images\/168455631\/free_twitter_designer.jpg","utc_offset":-32400,"description":"An online tool for offline community action, built by Craigslist Foundation. Share or discover an idea for change today!","verified":false,"profile_image_url":"http:\/\/a3.twimg.com\/profile_images\/1159898446\/lm_twitter_normal.gif","id_str":"209802925","lang":"en","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/168455631\/free_twitter_designer.jpg","favourites_count":1,"profile_text_color":"333333","status":{"truncated":false,"created_at":"Thu Aug 18 23:29:09 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"104334044203986945","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":4,"source":"\u003Ca href=\"http:\/\/www.hootsuite.com\" rel=\"nofollow\"\u003EHootSuite\u003C\/a\u003E","retweeted_status":{"truncated":false,"created_at":"Wed Aug 17 21:19:09 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"possibly_sensitive":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"103938943233437696","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":4,"source":"\u003Ca href=\"http:\/\/www.hootsuite.com\" rel=\"nofollow\"\u003EHootSuite\u003C\/a\u003E","id":103938943233437696,"text":"Voting is now open for #SXSW panels! Please go vote for our panel with @Bluecadet @lkmnd on creating offline community http:\/\/ow.ly\/65TMm"},"id":104334044203986945,"text":"RT @atlasobscura: Voting is now open for #SXSW panels! Please go vote for our panel with @Bluecadet @lkmnd on creating offline community ..."},"friends_count":401,"profile_sidebar_fill_color":"DDEEF6","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1159898446\/lm_twitter_normal.gif","screen_name":"lkmnd","default_profile_image":false,"show_all_inline_media":false,"geo_enabled":true,"profile_background_tile":true,"location":"San Francisco, CA","notifications":false,"is_translator":false,"profile_link_color":"0084B4","url":"http:\/\/likeminded.org","id":209802925,"follow_request_sent":false,"statuses_count":128,"following":false,"profile_sidebar_border_color":"C0DEED","followers_count":332},"token":"23"},{"user":{"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","time_zone":null,"protected":false,"profile_use_background_image":true,"friends_count":133,"profile_image_url_https":"https:\/\/si0.twimg.com\/sticky\/default_profile_images\/default_profile_5_normal.png","name":"Jace","default_profile_image":true,"created_at":"Fri Jun 05 00:38:06 +0000 2009","profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":null,"description":null,"is_translator":false,"verified":false,"profile_image_url":"http:\/\/a0.twimg.com\/sticky\/default_profile_images\/default_profile_5_normal.png","id_str":"44776072","follow_request_sent":false,"lang":"en","favourites_count":0,"profile_text_color":"333333","status":{"truncated":false,"created_at":"Wed Jun 17 04:22:09 +0000 2009","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"possibly_sensitive":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"2202180865","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/playspymaster.com\" rel=\"nofollow\"\u003ESpymaster\u003C\/a\u003E","id":2202180865,"text":"I just wounded @avianto in an assassination attempt. #spymaster http:\/\/bit.ly\/playspy"},"show_all_inline_media":false,"geo_enabled":false,"profile_sidebar_fill_color":"DDEEF6","screen_name":"SecretAgent00J","profile_background_tile":false,"location":null,"contributors_enabled":false,"notifications":false,"default_profile":true,"listed_count":2,"statuses_count":44,"profile_link_color":"0084B4","url":null,"id":44776072,"following":false,"profile_sidebar_border_color":"C0DEED","followers_count":80},"token":"14"},{"user":{"time_zone":"Central Time (US & Canada)","protected":false,"is_translator":false,"default_profile":true,"profile_use_background_image":true,"name":"Justa Spy","follow_request_sent":false,"statuses_count":34,"created_at":"Mon Jun 08 14:37:58 +0000 2009","profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":-21600,"description":"My alter-ego... Find the real me: @goneflyin","verified":false,"profile_image_url":"http:\/\/a3.twimg.com\/sticky\/default_profile_images\/default_profile_4_normal.png","id_str":"45577830","contributors_enabled":false,"lang":"en","favourites_count":0,"profile_text_color":"333333","status":{"truncated":false,"created_at":"Wed Jul 20 01:04:26 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"possibly_sensitive":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"93486387462021121","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/shadowcities.com\/\" rel=\"nofollow\"\u003EShadow Cities\u003C\/a\u003E","id":93486387462021121,"text":"Join Me (AufFlaighin) in the Battle for Shadow Cities! http:\/\/bit.ly\/mVYnxv"},"listed_count":3,"profile_sidebar_fill_color":"DDEEF6","screen_name":"gonespyin","profile_background_tile":false,"location":"","notifications":false,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","friends_count":626,"profile_link_color":"0084B4","url":null,"profile_image_url_https":"https:\/\/si0.twimg.com\/sticky\/default_profile_images\/default_profile_4_normal.png","id":45577830,"default_profile_image":true,"show_all_inline_media":false,"following":false,"geo_enabled":false,"profile_sidebar_border_color":"C0DEED","followers_count":364},"token":"14"},{"user":{"time_zone":"Eastern Time (US & Canada)","protected":false,"profile_use_background_image":true,"name":"Darth Vader","contributors_enabled":false,"created_at":"Tue Jan 09 15:42:04 +0000 2007","profile_background_color":"4B4B4B","listed_count":12900,"profile_background_image_url":"http:\/\/a2.twimg.com\/profile_background_images\/30752\/vader.gif","utc_offset":-18000,"description":"Evil Orphan Annie\u2122","verified":false,"profile_image_url":"http:\/\/a1.twimg.com\/profile_images\/425092539\/vader_normal_normal.png","id_str":"618593","lang":"en","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/30752\/vader.gif","favourites_count":252,"profile_text_color":"8a8a8a","status":{"truncated":false,"created_at":"Thu Aug 18 14:02:38 +0000 2011","geo":null,"in_reply_to_user_id":641333,"in_reply_to_status_id":104190049779851264,"favorited":false,"in_reply_to_status_id_str":"104190049779851264","coordinates":null,"id_str":"104191476291997696","in_reply_to_screen_name":"davidcaolo","in_reply_to_user_id_str":"641333","place":null,"contributors":null,"retweeted":false,"retweet_count":1,"source":"\u003Ca href=\"http:\/\/twitterrific.com\" rel=\"nofollow\"\u003ETwitterrific for Mac\u003C\/a\u003E","id":104191476291997696,"text":"@davidcaolo If this is a consular ship, where is the ambassador?!"},"friends_count":6699,"profile_sidebar_fill_color":"000000","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/425092539\/vader_normal_normal.png","screen_name":"darthvader","default_profile_image":false,"default_profile":false,"show_all_inline_media":false,"geo_enabled":false,"profile_background_tile":true,"location":"Empire, CO","notifications":false,"is_translator":false,"profile_link_color":"AA1212","url":null,"id":618593,"follow_request_sent":false,"statuses_count":1454,"following":false,"profile_sidebar_border_color":"AA1212","followers_count":350892},"token":"22"},{"user":{"profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/53292788\/twitter_bg2.png","time_zone":"Pacific Time (US & Canada)","protected":false,"profile_use_background_image":true,"friends_count":254,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1497179992\/skitched-20110815-135946_normal.jpg","name":"Cliff Moon","default_profile_image":false,"created_at":"Mon Mar 24 01:05:35 +0000 2008","profile_background_color":"707070","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/53292788\/twitter_bg2.png","utc_offset":-28800,"description":"Not a real person.","is_translator":false,"show_all_inline_media":false,"verified":false,"geo_enabled":true,"profile_image_url":"http:\/\/a2.twimg.com\/profile_images\/1497179992\/skitched-20110815-135946_normal.jpg","id_str":"14204623","follow_request_sent":null,"lang":"en","favourites_count":320,"profile_text_color":"666666","status":{"truncated":false,"created_at":"Mon Aug 22 01:30:47 +0000 2011","geo":null,"in_reply_to_user_id":15387262,"in_reply_to_status_id":105451772604198912,"favorited":false,"in_reply_to_status_id_str":"105451772604198912","coordinates":null,"id_str":"105451820574457856","in_reply_to_screen_name":"ohlol","in_reply_to_user_id_str":"15387262","place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/www.tweetdeck.com\" rel=\"nofollow\"\u003ETweetDeck\u003C\/a\u003E","id":105451820574457856,"text":"@ohlol what is it?"},"profile_sidebar_fill_color":"000000","screen_name":"moonpolysoft","default_profile":false,"statuses_count":14100,"profile_background_tile":true,"location":"8========D~~~","contributors_enabled":false,"notifications":null,"listed_count":90,"profile_link_color":"66d6ff","url":"http:\/\/github.com\/cliffmoon","id":14204623,"following":null,"profile_sidebar_border_color":"bddcad","followers_count":1193},"token":"1"}]
1
+ [{"user":{"time_zone":"Eastern Time (US & Canada)","protected":false,"default_profile":true,"profile_use_background_image":true,"name":"John Trupiano","contributors_enabled":false,"created_at":"Sun May 11 19:46:06 +0000 2008","profile_background_color":"C0DEED","listed_count":99,"profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":-18000,"description":"Owner of @smartlogic. I tweet a mixed stream of incoherence and inside jokes. My tweets make me laugh; your mileage will vary.","verified":false,"profile_image_url":"http:\/\/a2.twimg.com\/profile_images\/627637055\/thumb_gravatar_normal.jpg","id_str":"14736332","lang":"en","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","favourites_count":117,"profile_text_color":"333333","status":{"truncated":false,"created_at":"Sat Aug 20 03:27:22 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"104756380472324096","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/twitter.com\/#!\/download\/iphone\" rel=\"nofollow\"\u003ETwitter for iPhone\u003C\/a\u003E","id":104756380472324096,"text":"Jimmy Johns: the best place to go right after getting pepper sprayed."},"friends_count":545,"profile_sidebar_fill_color":"DDEEF6","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/627637055\/thumb_gravatar_normal.jpg","screen_name":"jtrupiano","default_profile_image":false,"show_all_inline_media":false,"geo_enabled":false,"profile_background_tile":false,"location":"Baltimore, MD","notifications":null,"is_translator":false,"profile_link_color":"0084B4","url":"http:\/\/smartlogicsolutions.com\/john","id":14736332,"follow_request_sent":null,"statuses_count":3850,"following":null,"profile_sidebar_border_color":"C0DEED","followers_count":802},"token":"1"},{"user":{"follow_request_sent":false,"time_zone":"Pacific Time (US & Canada)","protected":false,"profile_use_background_image":true,"name":"Matt Laroche","created_at":"Sun Apr 20 12:05:38 +0000 2008","profile_background_color":"C6E2EE","show_all_inline_media":false,"contributors_enabled":false,"geo_enabled":true,"profile_background_image_url":"http:\/\/a1.twimg.com\/images\/themes\/theme2\/bg.gif","utc_offset":-28800,"description":"Software engineer, beer advocate, Palo Altan, husband.","listed_count":20,"verified":false,"profile_image_url":"http:\/\/a3.twimg.com\/profile_images\/1255024245\/banana_reasonably_small_normal.jpg","id_str":"14451152","lang":"en","favourites_count":10,"profile_text_color":"663B12","status":{"truncated":false,"created_at":"Sun Aug 21 20:59:41 +0000 2011","geo":{"type":"Point","coordinates":[33.8043296,-117.9226607]},"in_reply_to_user_id":20113974,"in_reply_to_status_id":105382259623854081,"favorited":false,"in_reply_to_status_id_str":"105382259623854081","coordinates":{"type":"Point","coordinates":[-117.9226607,33.8043296]},"id_str":"105383592376537088","in_reply_to_screen_name":"chasesterling","in_reply_to_user_id_str":"20113974","place":{"country_code":"US","name":"Anaheim","attributes":{},"full_name":"Anaheim, CA","place_type":"city","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-118.017597,33.788835],[-117.674604,33.788835],[-117.674604,33.881456],[-118.017597,33.881456]]]},"id":"0c2e6999105f8070","url":"http:\/\/api.twitter.com\/1\/geo\/id\/0c2e6999105f8070.json"},"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003ETwitter for Android\u003C\/a\u003E","id":105383592376537088,"text":"@chasesterling sadly in a fake vending machine at the Monsters Inc ride at Disney's California Adventure."},"statuses_count":6251,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme2\/bg.gif","profile_sidebar_fill_color":"DAECF4","screen_name":"mlroach","profile_background_tile":false,"friends_count":403,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1255024245\/banana_reasonably_small_normal.jpg","location":"Palo Alto, California","default_profile_image":false,"notifications":false,"default_profile":false,"profile_link_color":"1F98C7","url":null,"id":14451152,"is_translator":false,"following":false,"profile_sidebar_border_color":"C6E2EE","followers_count":299},"token":"21"},{"user":{"follow_request_sent":false,"statuses_count":183,"time_zone":"Greenland","protected":false,"profile_use_background_image":true,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/121725893\/3136259685_ed14d06774.jpg","name":"AntonioPires","created_at":"Sat May 16 18:24:33 +0000 2009","profile_background_color":"000000","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/121725893\/3136259685_ed14d06774.jpg","utc_offset":-10800,"description":"","listed_count":2,"contributors_enabled":false,"verified":false,"geo_enabled":true,"profile_image_url":"http:\/\/a2.twimg.com\/profile_images\/1067377349\/s_normal.jpg","id_str":"40514587","lang":"en","favourites_count":2,"profile_text_color":"828282","status":{"truncated":false,"created_at":"Mon Jun 13 16:27:31 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"possibly_sensitive":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"80310340704931840","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"web","id":80310340704931840,"text":"Estou concorrendo a 1 ingresso do Alexandre Wollner no Rio \u2013 http:\/\/t.co\/QlJZUqF Siga @design_blog e @pensoeventos e d\u00ea RT!"},"show_all_inline_media":false,"profile_sidebar_fill_color":"1c1c1c","screen_name":"antpires","profile_background_tile":false,"location":"Rio","default_profile_image":false,"notifications":false,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1067377349\/s_normal.jpg","friends_count":198,"profile_link_color":"e86f6f","url":"http:\/\/antpires.carbonmade.com","id":40514587,"is_translator":false,"default_profile":false,"following":false,"profile_sidebar_border_color":"000000","followers_count":158},"token":"14"},{"user":{"time_zone":"London","protected":false,"follow_request_sent":false,"profile_use_background_image":true,"name":"Alex MacCaw","created_at":"Fri Mar 23 12:36:14 +0000 2007","profile_background_color":"9ae4e8","contributors_enabled":false,"profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":0,"description":"Ruby\/JavaScript developer, O'Reilly author and entrepreneur. ","default_profile":false,"verified":false,"profile_image_url":"http:\/\/a1.twimg.com\/profile_images\/1081483457\/Gravatar_for_info_eribium_normal.jpeg","id_str":"2006261","listed_count":171,"lang":"en","favourites_count":9,"profile_text_color":"000000","status":{"truncated":false,"created_at":"Sun Aug 21 23:54:01 +0000 2011","geo":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"possibly_sensitive":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"105427467593981952","in_reply_to_screen_name":null,"in_reply_to_user_id_str":null,"place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/twitter.com\/tweetbutton\" rel=\"nofollow\"\u003ETweet Button\u003C\/a\u003E","id":105427467593981952,"text":"Visualizing WebKit's hardware acceleration http:\/\/t.co\/nX5pvPl via @thomasfuchs"},"profile_sidebar_fill_color":"e0ff92","screen_name":"maccman","show_all_inline_media":false,"geo_enabled":true,"profile_background_tile":false,"location":"London","notifications":false,"is_translator":false,"default_profile_image":false,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","profile_link_color":"0000ff","url":"http:\/\/alexmaccaw.co.uk","id":2006261,"statuses_count":4497,"following":false,"friends_count":967,"profile_sidebar_border_color":"87bc44","followers_count":2028,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1081483457\/Gravatar_for_info_eribium_normal.jpeg"},"token":"11"},{"user":{"follow_request_sent":false,"statuses_count":24,"time_zone":"Pacific Time (US & Canada)","protected":false,"profile_use_background_image":true,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","name":"stuntmann82","created_at":"Sat Aug 30 08:22:57 +0000 2008","profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","utc_offset":-28800,"description":"","listed_count":1,"contributors_enabled":false,"verified":false,"geo_enabled":false,"profile_image_url":"http:\/\/a1.twimg.com\/profile_images\/249396146\/images_normal.jpg","id_str":"16052754","lang":"en","favourites_count":0,"profile_text_color":"333333","status":{"truncated":false,"created_at":"Wed Nov 25 06:20:05 +0000 2009","geo":null,"in_reply_to_user_id":2889221,"in_reply_to_status_id":null,"favorited":false,"in_reply_to_status_id_str":null,"coordinates":null,"id_str":"6042752864","in_reply_to_screen_name":"vitaminjeff","in_reply_to_user_id_str":"2889221","place":null,"contributors":null,"retweeted":false,"retweet_count":0,"source":"\u003Ca href=\"http:\/\/www.tweetdeck.com\/\" rel=\"nofollow\"\u003ETweetDeck\u003C\/a\u003E","id":6042752864,"text":"@vitaminjeff Sup bro!"},"show_all_inline_media":false,"profile_sidebar_fill_color":"DDEEF6","screen_name":"stuntmann82","profile_background_tile":false,"location":"","default_profile_image":false,"notifications":false,"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/249396146\/images_normal.jpg","friends_count":5,"profile_link_color":"0084B4","url":null,"id":16052754,"is_translator":false,"default_profile":true,"following":false,"profile_sidebar_border_color":"C0DEED","followers_count":42},"token":"14"}]
@@ -0,0 +1 @@
1
+ [{"geo_enabled":true,"time_zone":"Pacific Time (US & Canada)","description":"Adventures in hunger and foolishness.","profile_sidebar_fill_color":"DDEEF6","followers_count":898,"verified":false,"notifications":false,"follow_request_sent":false,"profile_use_background_image":true,"profile_sidebar_border_color":"C0DEED","url":null,"profile_background_image_url":"http:\/\/a3.twimg.com\/profile_background_images\/162641967\/we_concept_bg2.png","lang":"en","created_at":"Mon Jul 16 12:59:01 +0000 2007","profile_background_color":"000000","location":"San Francisco","listed_count":29,"profile_background_tile":false,"friends_count":88,"protected":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/323331048\/me_normal.jpg","statuses_count":2962,"profile_text_color":"333333","name":"Erik Michaels-Ober","show_all_inline_media":true,"following":true,"favourites_count":727,"screen_name":"sferik","id":7505382,"id_str":"7505382","contributors_enabled":false,"utc_offset":-28800,"profile_link_color":"0084B4"},{"geo_enabled":true,"time_zone":"Central Time (US & Canada)","description":"Christian husband and father. Dev Experience @ HP Cloud Services. Co-host of the @changelogshow. Mashup of design & development.","profile_sidebar_fill_color":"dddddd","followers_count":2767,"status":{"place":null,"retweet_count":null,"geo":null,"retweeted":false,"in_reply_to_status_id":28008649044,"source":"\u003Ca href=\"http:\/\/twitter.com\" rel=\"nofollow\"\u003ETweetie for Mac\u003C\/a\u003E","truncated":false,"in_reply_to_status_id_str":"28008649044","created_at":"Thu Oct 21 10:33:15 +0000 2010","in_reply_to_user_id":11502142,"favorited":false,"in_reply_to_user_id_str":"11502142","contributors":null,"coordinates":null,"in_reply_to_screen_name":"benfawkes","id":28014236998,"id_str":"28014236998","text":"@benfawkes Surely. Just email wynn at the changelog dot com."},"verified":false,"notifications":false,"follow_request_sent":false,"profile_use_background_image":true,"profile_sidebar_border_color":"cccccc","url":"http:\/\/wynnnetherland.com","profile_background_image_url":"http:\/\/a1.twimg.com\/profile_background_images\/61741268\/twitter-small.png","lang":"en","created_at":"Sat Mar 08 16:34:22 +0000 2008","profile_background_color":"efefef","location":"Dallas, TX","listed_count":185,"profile_background_tile":false,"friends_count":1871,"protected":false,"profile_image_url":"http:\/\/a2.twimg.com\/profile_images\/485575482\/komikazee_normal.png","statuses_count":3913,"profile_text_color":"666666","name":"Wynn Netherland","show_all_inline_media":false,"following":true,"favourites_count":32,"screen_name":"pengwynn","id":14100886,"id_str":"14100886","contributors_enabled":false,"utc_offset":-21600,"profile_link_color":"35abe9"}]
data/spec/helper.rb CHANGED
@@ -4,7 +4,6 @@ unless ENV['CI']
4
4
  end
5
5
 
6
6
  require 't'
7
- T.env = 'test'
8
7
  require 'rspec'
9
8
  require 'timecop'
10
9
  require 'webmock/rspec'
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  require 'helper'
3
3
 
4
- describe T::CLI::List do
4
+ describe T::List do
5
5
 
6
6
  before do
7
7
  rcfile = RCFile.instance
@@ -20,6 +20,42 @@ describe T::CLI::List do
20
20
  $stdout = @old_stdout
21
21
  end
22
22
 
23
+ describe "#add" do
24
+ before do
25
+ @t.options = @t.options.merge(:profile => fixture_path + "/.trc")
26
+ stub_get("/1/account/verify_credentials.json").
27
+ to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
28
+ stub_post("/1/lists/members/create_all.json").
29
+ with(:body => {:screen_name => "sferik", :slug => "presidents", :owner_screen_name => "sferik"}).
30
+ to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
31
+ end
32
+ it "should request the correct resource" do
33
+ @t.list("add", "presidents", "sferik")
34
+ a_get("/1/account/verify_credentials.json").
35
+ should have_been_made
36
+ a_post("/1/lists/members/create_all.json").
37
+ with(:body => {:screen_name => "sferik", :slug => "presidents", :owner_screen_name => "sferik"}).
38
+ should have_been_made
39
+ end
40
+ it "should have the correct output" do
41
+ @t.list("add", "presidents", "sferik")
42
+ $stdout.string.should =~ /@testcli added 1 user to the list "presidents"\./
43
+ end
44
+ context "Twitter is down" do
45
+ it "should retry 3 times and then raise an error" do
46
+ stub_post("/1/lists/members/create_all.json").
47
+ with(:body => {:screen_name => "sferik", :slug => "presidents", :owner_screen_name => "sferik"}).
48
+ to_return(:status => 502)
49
+ lambda do
50
+ @t.list("add", "presidents", "sferik")
51
+ end.should raise_error("Twitter is down or being upgraded.")
52
+ a_post("/1/lists/members/create_all.json").
53
+ with(:body => {:screen_name => "sferik", :slug => "presidents", :owner_screen_name => "sferik"}).
54
+ should have_been_made.times(3)
55
+ end
56
+ end
57
+ end
58
+
23
59
  describe "#create" do
24
60
  before do
25
61
  @t.options = @t.options.merge(:profile => fixture_path + "/.trc")
@@ -39,20 +75,55 @@ describe T::CLI::List do
39
75
  end
40
76
  end
41
77
 
42
- describe "#timeline" do
78
+ describe "#remove" do
43
79
  before do
80
+ @t.options = @t.options.merge(:profile => fixture_path + "/.trc")
44
81
  stub_get("/1/account/verify_credentials.json").
45
82
  to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
83
+ end
84
+ it "should request the correct resource" do
85
+ stub_post("/1/lists/members/destroy_all.json").
86
+ with(:body => {:screen_name => "sferik", :slug => "presidents", :owner_screen_name => "sferik"}).
87
+ to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
88
+ @t.list("remove", "presidents", "sferik")
89
+ a_get("/1/account/verify_credentials.json").
90
+ should have_been_made
91
+ a_post("/1/lists/members/destroy_all.json").
92
+ with(:body => {:screen_name => "sferik", :slug => "presidents", :owner_screen_name => "sferik"}).
93
+ should have_been_made
94
+ end
95
+ it "should have the correct output" do
96
+ stub_post("/1/lists/members/destroy_all.json").
97
+ with(:body => {:screen_name => "sferik", :slug => "presidents", :owner_screen_name => "sferik"}).
98
+ to_return(:body => fixture("list.json"), :headers => {:content_type => "application/json; charset=utf-8"})
99
+ @t.list("remove", "presidents", "sferik")
100
+ $stdout.string.should =~ /@testcli removed 1 user from the list "presidents"\./
101
+ end
102
+ context "Twitter is down" do
103
+ it "should retry 3 times and then raise an error" do
104
+ stub_post("/1/lists/members/destroy_all.json").
105
+ with(:body => {:screen_name => "sferik", :slug => "presidents", :owner_screen_name => "sferik"}).
106
+ to_return(:status => 502)
107
+ lambda do
108
+ @t.list("remove", "presidents", "sferik")
109
+ end.should raise_error("Twitter is down or being upgraded.")
110
+ a_post("/1/lists/members/destroy_all.json").
111
+ with(:body => {:screen_name => "sferik", :slug => "presidents", :owner_screen_name => "sferik"}).
112
+ should have_been_made.times(3)
113
+ end
114
+ end
115
+ end
116
+
117
+ describe "#timeline" do
118
+ before do
46
119
  stub_get("/1/lists/statuses.json").
47
- with(:query => {:owner_screen_name => "sferik", :per_page => "20", :slug => "presidents", :include_entities => "false"}).
120
+ with(:query => {:owner_screen_name => "testcli", :per_page => "20", :slug => "presidents", :include_entities => "false"}).
48
121
  to_return(:body => fixture("statuses.json"), :headers => {:content_type => "application/json; charset=utf-8"})
49
122
  end
50
123
  it "should request the correct resource" do
51
124
  @t.list("timeline", "presidents")
52
- a_get("/1/account/verify_credentials.json").
53
- should have_been_made
54
125
  a_get("/1/lists/statuses.json").
55
- with(:query => {:owner_screen_name => "sferik", :per_page => "20", :slug => "presidents", :include_entities => "false"}).
126
+ with(:query => {:owner_screen_name => "testcli", :per_page => "20", :slug => "presidents", :include_entities => "false"}).
56
127
  should have_been_made
57
128
  end
58
129
  it "should have the correct output" do
data/spec/rcfile_spec.rb CHANGED
@@ -3,10 +3,6 @@ require 'helper'
3
3
 
4
4
  describe RCFile do
5
5
 
6
- before do
7
- RCFile.instance.reset
8
- end
9
-
10
6
  after do
11
7
  RCFile.instance.reset
12
8
  end
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  require 'helper'
3
3
 
4
- describe T::CLI::Search do
4
+ describe T::Search do
5
5
 
6
6
  before do
7
7
  rcfile = RCFile.instance
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  require 'helper'
3
3
 
4
- describe T::CLI::Set do
4
+ describe T::Set do
5
5
 
6
6
  before do
7
7
  rcfile = RCFile.instance