t 1.7.2 → 2.0.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.
data/spec/delete_spec.rb CHANGED
@@ -50,24 +50,24 @@ describe T::Delete do
50
50
  stub_post("/1.1/direct_messages/destroy.json").with(:body => {:id => "1773478249"}).to_return(:body => fixture("direct_message.json"))
51
51
  end
52
52
  it "requests the correct resource" do
53
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the direct message to @pengwynn: \"Creating a fixture for the Twitter gem\"? [y/N] ")
54
- $stdin.should_receive(:gets).and_return("yes")
53
+ expect($stdout).to receive(:print).with("Are you sure you want to permanently delete the direct message to @pengwynn: \"Creating a fixture for the Twitter gem\"? [y/N] ")
54
+ expect($stdin).to receive(:gets).and_return("yes")
55
55
  @delete.dm("1773478249")
56
56
  expect(a_get("/1.1/direct_messages/show.json").with(:query => {:id => "1773478249"})).to have_been_made
57
57
  expect(a_post("/1.1/direct_messages/destroy.json").with(:body => {:id => "1773478249"})).to have_been_made
58
58
  end
59
59
  context "yes" do
60
60
  it "has the correct output" do
61
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the direct message to @pengwynn: \"Creating a fixture for the Twitter gem\"? [y/N] ")
62
- $stdin.should_receive(:gets).and_return("yes")
61
+ expect($stdout).to receive(:print).with("Are you sure you want to permanently delete the direct message to @pengwynn: \"Creating a fixture for the Twitter gem\"? [y/N] ")
62
+ expect($stdin).to receive(:gets).and_return("yes")
63
63
  @delete.dm("1773478249")
64
64
  expect($stdout.string.chomp).to eq "@testcli deleted the direct message sent to @pengwynn: \"Creating a fixture for the Twitter gem\""
65
65
  end
66
66
  end
67
67
  context "no" do
68
68
  it "has the correct output" do
69
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the direct message to @pengwynn: \"Creating a fixture for the Twitter gem\"? [y/N] ")
70
- $stdin.should_receive(:gets).and_return("no")
69
+ expect($stdout).to receive(:print).with("Are you sure you want to permanently delete the direct message to @pengwynn: \"Creating a fixture for the Twitter gem\"? [y/N] ")
70
+ expect($stdin).to receive(:gets).and_return("no")
71
71
  @delete.dm("1773478249")
72
72
  expect($stdout.string.chomp).to be_empty
73
73
  end
@@ -94,24 +94,24 @@ describe T::Delete do
94
94
  stub_post("/1.1/favorites/destroy.json").with(:body => {:id => "28439861609"}).to_return(:body => fixture("status.json"))
95
95
  end
96
96
  it "requests the correct resource" do
97
- $stdout.should_receive(:print).with("Are you sure you want to remove @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\" from your favorites? [y/N] ")
98
- $stdin.should_receive(:gets).and_return("yes")
97
+ expect($stdout).to receive(:print).with("Are you sure you want to remove @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\" from your favorites? [y/N] ")
98
+ expect($stdin).to receive(:gets).and_return("yes")
99
99
  @delete.favorite("28439861609")
100
100
  expect(a_get("/1.1/statuses/show/28439861609.json").with(:query => {:include_my_retweet => "false"})).to have_been_made
101
101
  expect(a_post("/1.1/favorites/destroy.json").with(:body => {:id => "28439861609"})).to have_been_made
102
102
  end
103
103
  context "yes" do
104
104
  it "has the correct output" do
105
- $stdout.should_receive(:print).with("Are you sure you want to remove @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\" from your favorites? [y/N] ")
106
- $stdin.should_receive(:gets).and_return("yes")
105
+ expect($stdout).to receive(:print).with("Are you sure you want to remove @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\" from your favorites? [y/N] ")
106
+ expect($stdin).to receive(:gets).and_return("yes")
107
107
  @delete.favorite("28439861609")
108
108
  expect($stdout.string).to match /^@testcli unfavorited @sferik's status: "The problem with your code is that it's doing exactly what you told it to do\."$/
109
109
  end
110
110
  end
111
111
  context "no" do
112
112
  it "has the correct output" do
113
- $stdout.should_receive(:print).with("Are you sure you want to remove @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\" from your favorites? [y/N] ")
114
- $stdin.should_receive(:gets).and_return("no")
113
+ expect($stdout).to receive(:print).with("Are you sure you want to remove @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\" from your favorites? [y/N] ")
114
+ expect($stdin).to receive(:gets).and_return("no")
115
115
  @delete.favorite("28439861609")
116
116
  expect($stdout.string.chomp).to be_empty
117
117
  end
@@ -139,24 +139,24 @@ describe T::Delete do
139
139
  stub_post("/1.1/lists/destroy.json").with(:body => {:owner_id => "7505382", :list_id => "8863586"}).to_return(:body => fixture("list.json"))
140
140
  end
141
141
  it "requests the correct resource" do
142
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? [y/N] ")
143
- $stdin.should_receive(:gets).and_return("yes")
142
+ expect($stdout).to receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? [y/N] ")
143
+ expect($stdin).to receive(:gets).and_return("yes")
144
144
  @delete.list("presidents")
145
145
  expect(a_get("/1.1/account/verify_credentials.json")).to have_been_made
146
146
  expect(a_post("/1.1/lists/destroy.json").with(:body => {:owner_id => "7505382", :list_id => "8863586"})).to have_been_made
147
147
  end
148
148
  context "yes" do
149
149
  it "has the correct output" do
150
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? [y/N] ")
151
- $stdin.should_receive(:gets).and_return("yes")
150
+ expect($stdout).to receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? [y/N] ")
151
+ expect($stdin).to receive(:gets).and_return("yes")
152
152
  @delete.list("presidents")
153
153
  expect($stdout.string.chomp).to eq "@testcli deleted the list \"presidents\"."
154
154
  end
155
155
  end
156
156
  context "no" do
157
157
  it "has the correct output" do
158
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? [y/N] ")
159
- $stdin.should_receive(:gets).and_return("no")
158
+ expect($stdout).to receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? [y/N] ")
159
+ expect($stdin).to receive(:gets).and_return("no")
160
160
  @delete.list("presidents")
161
161
  expect($stdout.string.chomp).to be_empty
162
162
  end
@@ -181,8 +181,8 @@ describe T::Delete do
181
181
  stub_get("/1.1/lists/show.json").with(:query => {:owner_screen_name => "sferik", :list_id => "8863586"}).to_return(:body => fixture("list.json"))
182
182
  end
183
183
  it "requests the correct resource" do
184
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? [y/N] ")
185
- $stdin.should_receive(:gets).and_return("yes")
184
+ expect($stdout).to receive(:print).with("Are you sure you want to permanently delete the list \"presidents\"? [y/N] ")
185
+ expect($stdin).to receive(:gets).and_return("yes")
186
186
  @delete.list("8863586")
187
187
  expect(a_get("/1.1/lists/show.json").with(:query => {:owner_screen_name => "sferik", :list_id => "8863586"})).to have_been_made
188
188
  expect(a_get("/1.1/account/verify_credentials.json")).to have_been_made
@@ -198,24 +198,24 @@ describe T::Delete do
198
198
  stub_post("/1.1/statuses/destroy/26755176471724032.json").with(:body => {:trim_user => "true"}).to_return(:body => fixture("status.json"))
199
199
  end
200
200
  it "requests the correct resource" do
201
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\"? [y/N] ")
202
- $stdin.should_receive(:gets).and_return("yes")
201
+ expect($stdout).to receive(:print).with("Are you sure you want to permanently delete @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\"? [y/N] ")
202
+ expect($stdin).to receive(:gets).and_return("yes")
203
203
  @delete.status("26755176471724032")
204
204
  expect(a_get("/1.1/statuses/show/26755176471724032.json").with(:query => {:include_my_retweet => "false"})).to have_been_made
205
205
  expect(a_post("/1.1/statuses/destroy/26755176471724032.json").with(:body => {:trim_user => "true"})).to have_been_made
206
206
  end
207
207
  context "yes" do
208
208
  it "has the correct output" do
209
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\"? [y/N] ")
210
- $stdin.should_receive(:gets).and_return("yes")
209
+ expect($stdout).to receive(:print).with("Are you sure you want to permanently delete @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\"? [y/N] ")
210
+ expect($stdin).to receive(:gets).and_return("yes")
211
211
  @delete.status("26755176471724032")
212
212
  expect($stdout.string.chomp).to eq "@testcli deleted the Tweet: \"The problem with your code is that it's doing exactly what you told it to do.\""
213
213
  end
214
214
  end
215
215
  context "no" do
216
216
  it "has the correct output" do
217
- $stdout.should_receive(:print).with("Are you sure you want to permanently delete @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\"? [y/N] ")
218
- $stdin.should_receive(:gets).and_return("no")
217
+ expect($stdout).to receive(:print).with("Are you sure you want to permanently delete @sferik's status: \"The problem with your code is that it's doing exactly what you told it to do.\"? [y/N] ")
218
+ expect($stdin).to receive(:gets).and_return("no")
219
219
  @delete.status("26755176471724032")
220
220
  expect($stdout.string.chomp).to be_empty
221
221
  end
@@ -0,0 +1,102 @@
1
+ # encoding: utf-8
2
+ require 'helper'
3
+
4
+ describe T::Editor do
5
+
6
+ context "when editing a file" do
7
+ before do
8
+ T::Editor.stub(:edit) do |path|
9
+ File.open(path, "wb") do |f|
10
+ f.write("A tweet!!!!")
11
+ end
12
+ end
13
+ end
14
+
15
+ it "fetches your tweet content without comments" do
16
+ expect(T::Editor.gets).to eq("A tweet!!!!")
17
+ end
18
+ end
19
+
20
+ context "when fetching the editor to write in" do
21
+ context "no $VISUAL or $EDITOR set" do
22
+ before do
23
+ ENV["EDITOR"] = ENV["VISUAL"] = nil
24
+ end
25
+
26
+ context "host_os is Mac OSX" do
27
+ it "returns the system editor" do
28
+ RbConfig::CONFIG['host_os'] = "darwin12.2.0"
29
+ expect(T::Editor.editor).to eq("vi")
30
+ end
31
+ end
32
+
33
+ context "host_os is Linux" do
34
+ it "returns the system editor" do
35
+ RbConfig::CONFIG['host_os'] = "3.2.0-4-amd64"
36
+ expect(T::Editor.editor).to eq("vi")
37
+ end
38
+ end
39
+
40
+ context "host_os is Windows" do
41
+ it "returns the system editor" do
42
+ RbConfig::CONFIG['host_os'] = "mswin"
43
+ expect(T::Editor.editor).to eq("notepad")
44
+ end
45
+ end
46
+ end
47
+
48
+ context "$VISUAL is set" do
49
+ before do
50
+ ENV["EDITOR"] = nil
51
+ ENV["VISUAL"] = "/my/vim/install"
52
+ end
53
+
54
+ it "returns the system editor" do
55
+ expect(T::Editor.editor).to eq("/my/vim/install")
56
+ end
57
+ end
58
+
59
+ context "$EDITOR is set" do
60
+ before do
61
+ ENV["EDITOR"] = "/usr/bin/subl"
62
+ ENV["VISUAL"] = nil
63
+ end
64
+
65
+ it "returns the system editor" do
66
+ expect(T::Editor.editor).to eq("/usr/bin/subl")
67
+ end
68
+ end
69
+
70
+ context "$VISUAL and $EDITOR are set" do
71
+ before do
72
+ ENV["EDITOR"] = "/my/vastly/superior/editor"
73
+ ENV["VISUAL"] = "/usr/bin/emacs"
74
+ end
75
+
76
+ it "returns the system editor" do
77
+ expect(T::Editor.editor).to eq("/usr/bin/emacs")
78
+ end
79
+ end
80
+ end
81
+
82
+ context "when fetching system editor" do
83
+ context "on a mac" do
84
+ before do
85
+ RbConfig::CONFIG['host_os'] = "darwin12.2.0"
86
+ end
87
+ it "returns 'vi' on a unix machine" do
88
+ expect(T::Editor.system_editor).to eq("vi")
89
+ end
90
+ end
91
+
92
+ context "on a Windows POC" do
93
+ before do
94
+ RbConfig::CONFIG['host_os'] = "mswin"
95
+ end
96
+ it "returns 'notepad' on a windows box" do
97
+ expect(T::Editor.system_editor).to eq("notepad")
98
+ end
99
+ end
100
+ end
101
+
102
+ end
@@ -0,0 +1 @@
1
+ {"token_type":"bearer","access_token":"AAAA%2FAAA%3DAAAAAAAA"}
@@ -1 +1 @@
1
- {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092545,"id_str":"55709764298092545","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d1","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","full_name":"Blowfish Sushi To Die For, San Francisco","country_code":"US","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]},"attributes":{"region":"California","locality":"San Francisco","street_address":"2170 Bryant St"}},"contributors":null,"retweet_count":320,"favorited":false,"retweeted":false,"possibly_sensitive":false}
1
+ {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092545,"id_str":"55709764298092545","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d1","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","full_name":"Blowfish Sushi To Die For, San Francisco","country_code":"US","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]},"attributes":{"region":"California","locality":"San Francisco","street_address":"2170 Bryant St"}},"contributors":null,"retweet_count":320,"favorite_count":50,"favorited":false,"retweeted":false,"possibly_sensitive":false}
@@ -1 +1 @@
1
- {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092546,"id_str":"55709764298092546","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d2","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","full_name":"Blowfish Sushi To Die For, San Francisco","country_code":"US","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]}},"contributors":null,"retweet_count":320,"favorited":false,"retweeted":false,"possibly_sensitive":false}
1
+ {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092546,"id_str":"55709764298092546","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d2","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","full_name":"Blowfish Sushi To Die For, San Francisco","country_code":"US","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]}},"contributors":null,"retweet_count":320,"favorite_count":50,"favorited":false,"retweeted":false,"possibly_sensitive":false}
@@ -1 +1 @@
1
- {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092547,"id_str":"55709764298092547","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d3","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","full_name":"Blowfish Sushi To Die For, San Francisco","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]}},"contributors":null,"retweet_count":320,"favorited":false,"retweeted":false,"possibly_sensitive":false}
1
+ {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092547,"id_str":"55709764298092547","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d3","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","full_name":"Blowfish Sushi To Die For, San Francisco","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]}},"contributors":null,"retweet_count":320,"favorite_count":50,"favorited":false,"retweeted":false,"possibly_sensitive":false}
@@ -1 +1 @@
1
- {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092548,"id_str":"55709764298092548","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d4","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]}},"contributors":null,"retweet_count":320,"favorited":false,"retweeted":false,"possibly_sensitive":false}
1
+ {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092548,"id_str":"55709764298092548","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d4","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]}},"contributors":null,"retweet_count":320,"favorite_count":50,"favorited":false,"retweeted":false,"possibly_sensitive":false}
@@ -1 +1 @@
1
- {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092549,"id_str":"55709764298092549","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d5","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","full_name":"Blowfish Sushi To Die For, San Francisco","country_code":"US","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]},"attributes":{"region":"California"}},"contributors":null,"retweet_count":320,"favorited":false,"retweeted":false,"possibly_sensitive":false}
1
+ {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092549,"id_str":"55709764298092549","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d5","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","full_name":"Blowfish Sushi To Die For, San Francisco","country_code":"US","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]},"attributes":{"region":"California"}},"contributors":null,"retweet_count":320,"favorite_count":50,"favorited":false,"retweeted":false,"possibly_sensitive":false}
@@ -1 +1 @@
1
- {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092551,"id_str":"55709764298092551","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"contributors":null,"retweet_count":320,"favorited":false,"retweeted":false,"possibly_sensitive":false}
1
+ {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092551,"id_str":"55709764298092551","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"contributors":null,"retweet_count":320,"favorite_count":50,"favorited":false,"retweeted":false,"possibly_sensitive":false}
@@ -1 +1 @@
1
- {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092550,"id_str":"55709764298092550","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d6","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","full_name":"Blowfish Sushi To Die For, San Francisco","country_code":"US","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]},"attributes":{"region":"California","locality":"San Francisco"}},"contributors":null,"retweet_count":320,"favorited":false,"retweeted":false,"possibly_sensitive":false}
1
+ {"created_at":"Wed Apr 06 19:13:37 +0000 2011","id":55709764298092550,"id_str":"55709764298092550","text":"The problem with your code is that it's doing exactly what you told it to do.","source":"<a href=\"http://twitter.com/#!/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":7505382,"id_str":"7505382","name":"Erik Michaels-Ober","screen_name":"sferik","location":"San Francisco","description":"My heart is in the work.","url":"https://github.com/sferik","protected":false,"followers_count":2094,"friends_count":203,"listed_count":114,"created_at":"Mon Jul 16 12:59:01 +0000 2007","favourites_count":3073,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":6890,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http://a0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_image_url_https":"https://si0.twimg.com/profile_background_images/162641967/we_concept_bg2.png","profile_background_tile":false,"profile_image_url":"http://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_image_url_https":"https://si0.twimg.com/profile_images/1759857427/image1326743606_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"show_all_inline_media":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false},"geo":{"type":"Point","coordinates":[37.75963095,-122.410067]},"coordinates":{"type":"Point","coordinates":[-122.410067,37.75963095]},"place":{"id":"f29bbd03562e37d6","url":"http://api.twitter.com/1/geo/id/f29bbd03562e37d1.json","place_type":"poi","name":"Blowfish Sushi To Die For","full_name":"Blowfish Sushi To Die For, San Francisco","country_code":"US","country":"United States","bounding_box":{"type":"Polygon","coordinates":[[[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597],[-122.409954,37.759597]]]},"attributes":{"region":"California","locality":"San Francisco"}},"contributors":null,"retweet_count":320,"favorite_count":50,"favorited":false,"retweeted":false,"possibly_sensitive":false}
data/spec/helper.rb CHANGED
@@ -10,7 +10,7 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
10
10
  SimpleCov.start
11
11
 
12
12
  require 't'
13
- require 'multi_json'
13
+ require 'json'
14
14
  require 'rspec'
15
15
  require 'timecop'
16
16
  require 'webmock/rspec'
@@ -19,6 +19,10 @@ RSpec.configure do |config|
19
19
  config.expect_with :rspec do |c|
20
20
  c.syntax = :expect
21
21
  end
22
+
23
+ config.before(:each) do
24
+ stub_post("/oauth2/token").with(:body => "grant_type=client_credentials").to_return(:body => fixture("bearer_token.json"), :headers => {:content_type => "application/json; charset=utf-8"})
25
+ end
22
26
  end
23
27
 
24
28
  def a_delete(path, endpoint='https://api.twitter.com')
@@ -66,5 +70,5 @@ def fixture(file)
66
70
  end
67
71
 
68
72
  def status_from_fixture(file)
69
- Twitter::Status.new(MultiJson.load(fixture(file).read, :symbolize_keys => true))
73
+ Twitter::Status.new(JSON.parse(fixture(file).read, :symbolize_names => true))
70
74
  end
data/spec/list_spec.rb CHANGED
@@ -59,7 +59,7 @@ describe T::List do
59
59
  stub_post("/1.1/lists/members/create_all.json").with(:body => {:screen_name => "BarackObama", :slug => "presidents", :owner_screen_name => "sferik"}).to_return(:status => 502)
60
60
  expect do
61
61
  @list.add("presidents", "BarackObama")
62
- end.to raise_error("Twitter is down or being upgraded.")
62
+ end.to raise_error(Twitter::Error::BadGateway)
63
63
  expect(a_post("/1.1/lists/members/create_all.json").with(:body => {:screen_name => "BarackObama", :slug => "presidents", :owner_screen_name => "sferik"})).to have_been_made.times(3)
64
64
  end
65
65
  end
@@ -303,7 +303,7 @@ ID Since Last tweeted at Tweets Favorites Listed Following...
303
303
  stub_post("/1.1/lists/members/destroy_all.json").with(:body => {:screen_name => "BarackObama", :slug => "presidents", :owner_screen_name => "sferik"}).to_return(:status => 502)
304
304
  expect do
305
305
  @list.remove("presidents", "BarackObama")
306
- end.to raise_error("Twitter is down or being upgraded.")
306
+ end.to raise_error(Twitter::Error::BadGateway)
307
307
  expect(a_post("/1.1/lists/members/destroy_all.json").with(:body => {:screen_name => "BarackObama", :slug => "presidents", :owner_screen_name => "sferik"})).to have_been_made.times(3)
308
308
  end
309
309
  end
@@ -568,7 +568,7 @@ ID Since Last tweeted at Tweets Favorites Listed Following...
568
568
  eos
569
569
  end
570
570
  it "outputs with color when stdout is a tty" do
571
- $stdout.stub!(:"tty?").and_return(true)
571
+ allow($stdout).to receive(:"tty?").and_return(true)
572
572
  @list.timeline("presidents")
573
573
  expect($stdout.string).to eq <<-eos
574
574
  \e[1m\e[33m @mutgoff\e[0m
data/spec/rcfile_spec.rb CHANGED
@@ -52,7 +52,7 @@ describe T::RCFile do
52
52
  }
53
53
  expect(rcfile['testcli'].keys).to eq ['abc123']
54
54
  end
55
- it "is not be world readable or writable" do
55
+ it "is not be world writable" do
56
56
  rcfile = T::RCFile.instance
57
57
  rcfile.path = project_path + "/tmp/trc"
58
58
  rcfile['testcli'] = {
@@ -64,7 +64,21 @@ describe T::RCFile do
64
64
  :secret => 'jkl012',
65
65
  }
66
66
  }
67
- expect(File.stat(rcfile.path).mode).to eq 33152
67
+ expect(File.world_writable?(rcfile.path)).to be nil
68
+ end
69
+ it "is not be world readable" do
70
+ rcfile = T::RCFile.instance
71
+ rcfile.path = project_path + "/tmp/trc"
72
+ rcfile['testcli'] = {
73
+ 'abc123' => {
74
+ :username => 'testcli',
75
+ :consumer_key => 'abc123',
76
+ :consumer_secret => 'def456',
77
+ :token => 'ghi789',
78
+ :secret => 'jkl012',
79
+ }
80
+ }
81
+ expect(File.world_readable?(rcfile.path)).to be nil
68
82
  end
69
83
  end
70
84
 
@@ -135,11 +149,11 @@ describe T::RCFile do
135
149
  it "deletes the rcfile" do
136
150
  path = project_path + "/tmp/trc"
137
151
  File.open(path, 'w'){|file| file.write(YAML.dump({}))}
138
- expect(File.exist?(path)).to be_true
152
+ expect(File.exist?(path)).to be true
139
153
  rcfile = T::RCFile.instance
140
154
  rcfile.path = path
141
155
  rcfile.delete
142
- expect(File.exist?(path)).to be_false
156
+ expect(File.exist?(path)).to be false
143
157
  end
144
158
  end
145
159
 
@@ -148,14 +162,14 @@ describe T::RCFile do
148
162
  it "returns false" do
149
163
  rcfile = T::RCFile.instance
150
164
  rcfile.path = fixture_path + "/.trc"
151
- expect(rcfile.empty?).to be_false
165
+ expect(rcfile.empty?).to be false
152
166
  end
153
167
  end
154
168
  context "when file does not exist at path" do
155
169
  it "returns true" do
156
170
  rcfile = T::RCFile.instance
157
171
  rcfile.path = File.expand_path('../fixtures/foo', __FILE__)
158
- expect(rcfile.empty?).to be_true
172
+ expect(rcfile.empty?).to be true
159
173
  end
160
174
  end
161
175
  end
data/spec/search_spec.rb CHANGED
@@ -546,9 +546,9 @@ http://t.co/erdKx6HD"
546
546
  eos
547
547
  end
548
548
  end
549
- context "--decode-urls" do
549
+ context "--decode-uris" do
550
550
  before(:each) do
551
- @search.options = @search.options.merge("decode_urls" => true)
551
+ @search.options = @search.options.merge("decode_uris" => true)
552
552
  stub_get("/1.1/search/tweets.json").with(:query => {:q => "twitter", :include_entities => 1, :count => 20}).to_return(:body => fixture("search_with_entities.json"))
553
553
  stub_get("/1.1/search/tweets.json").with(:query => {:q => "twitter", :include_entities => 1, :count => 5, :max_id => 264784855672442882}).to_return(:body => fixture("search_with_entities.json"))
554
554
  end
@@ -728,9 +728,9 @@ ID,Posted at,Screen name,Text
728
728
  eos
729
729
  end
730
730
  end
731
- context "--decode-urls" do
731
+ context "--decode-uris" do
732
732
  before(:each) do
733
- @search.options = @search.options.merge("decode_urls" => true)
733
+ @search.options = @search.options.merge("decode_uris" => true)
734
734
  stub_get("/1.1/favorites/list.json").with(:query => {:count => "200", :include_entities => 1}).to_return(:body => fixture("statuses.json"))
735
735
  stub_get("/1.1/favorites/list.json").with(:query => {:count => "200", :include_entities => 1, :max_id => "244099460672679937"}).to_return(:body => fixture("empty_array.json"))
736
736
  end
@@ -762,7 +762,7 @@ ID Posted at Screen name Text
762
762
  stub_get("/1.1/favorites/list.json").with(:query => {:count => "200"}).to_return(:status => 502)
763
763
  expect do
764
764
  @search.favorites("twitter")
765
- end.to raise_error("Twitter is down or being upgraded.")
765
+ end.to raise_error(Twitter::Error::BadGateway)
766
766
  expect(a_get("/1.1/favorites/list.json").with(:query => {:count => "200"})).to have_been_made.times(3)
767
767
  end
768
768
  end
@@ -850,9 +850,9 @@ ID,Posted at,Screen name,Text
850
850
  eos
851
851
  end
852
852
  end
853
- context "--decode-urls" do
853
+ context "--decode-uris" do
854
854
  before(:each) do
855
- @search.options = @search.options.merge("decode_urls" => true)
855
+ @search.options = @search.options.merge("decode_uris" => true)
856
856
  stub_get("/1.1/statuses/mentions_timeline.json").with(:query => {:count => "200", :include_entities => 1}).to_return(:body => fixture("statuses.json"))
857
857
  stub_get("/1.1/statuses/mentions_timeline.json").with(:query => {:count => "200", :include_entities => 1, :max_id => "244099460672679937"}).to_return(:body => fixture("empty_array.json"))
858
858
  end
@@ -884,7 +884,7 @@ ID Posted at Screen name Text
884
884
  stub_get("/1.1/statuses/mentions_timeline.json").with(:query => {:count => "200"}).to_return(:status => 502)
885
885
  expect do
886
886
  @search.mentions("twitter")
887
- end.to raise_error("Twitter is down or being upgraded.")
887
+ end.to raise_error(Twitter::Error::BadGateway)
888
888
  expect(a_get("/1.1/statuses/mentions_timeline.json").with(:query => {:count => "200"})).to have_been_made.times(3)
889
889
  end
890
890
  end
@@ -925,9 +925,9 @@ ID,Posted at,Screen name,Text
925
925
  eos
926
926
  end
927
927
  end
928
- context "--decode-urls" do
928
+ context "--decode-uris" do
929
929
  before(:each) do
930
- @search.options = @search.options.merge("decode_urls" => true)
930
+ @search.options = @search.options.merge("decode_uris" => true)
931
931
  stub_get("/1.1/lists/statuses.json").with(:query => {:count => "200", :include_entities => 1, :owner_screen_name => "testcli", :slug => "presidents"}).to_return(:body => fixture("statuses.json"))
932
932
  stub_get("/1.1/lists/statuses.json").with(:query => {:count => "200", :include_entities => 1, :max_id => "244099460672679937", :owner_screen_name => "testcli", :slug => "presidents"}).to_return(:body => fixture("empty_array.json"))
933
933
  end
@@ -977,7 +977,7 @@ ID Posted at Screen name Text
977
977
  stub_get("/1.1/lists/statuses.json").with(:query => {:count => "200", :owner_screen_name => "testcli", :slug => "presidents"}).to_return(:status => 502)
978
978
  expect do
979
979
  @search.list("presidents", "twitter")
980
- end.to raise_error("Twitter is down or being upgraded.")
980
+ end.to raise_error(Twitter::Error::BadGateway)
981
981
  expect(a_get("/1.1/lists/statuses.json").with(:query => {:count => "200", :owner_screen_name => "testcli", :slug => "presidents"})).to have_been_made.times(3)
982
982
  end
983
983
  end
@@ -1013,9 +1013,9 @@ ID,Posted at,Screen name,Text
1013
1013
  eos
1014
1014
  end
1015
1015
  end
1016
- context "--decode-urls" do
1016
+ context "--decode-uris" do
1017
1017
  before(:each) do
1018
- @search.options = @search.options.merge("decode_urls" => true)
1018
+ @search.options = @search.options.merge("decode_uris" => true)
1019
1019
  stub_get("/1.1/statuses/user_timeline.json").with(:query => {:count => "200", :include_entities => 1, :include_rts => "true"}).to_return(:body => fixture("statuses.json"))
1020
1020
  stub_get("/1.1/statuses/user_timeline.json").with(:query => {:count => "200", :include_entities => 1, :include_rts => "true", :max_id => "244102729860009983"}).to_return(:body => fixture("empty_array.json"))
1021
1021
  end
@@ -1046,7 +1046,7 @@ ID Posted at Screen name Text
1046
1046
  stub_get("/1.1/statuses/user_timeline.json").with(:query => {:count => "200", :include_rts => "true"}).to_return(:status => 502)
1047
1047
  expect do
1048
1048
  @search.retweets("mosaic")
1049
- end.to raise_error("Twitter is down or being upgraded.")
1049
+ end.to raise_error(Twitter::Error::BadGateway)
1050
1050
  expect(a_get("/1.1/statuses/user_timeline.json").with(:query => {:count => "200", :include_rts => "true"})).to have_been_made.times(3)
1051
1051
  end
1052
1052
  end
@@ -1126,9 +1126,9 @@ ID,Posted at,Screen name,Text
1126
1126
  eos
1127
1127
  end
1128
1128
  end
1129
- context "--decode-urls" do
1129
+ context "--decode-uris" do
1130
1130
  before(:each) do
1131
- @search.options = @search.options.merge("decode_urls" => true)
1131
+ @search.options = @search.options.merge("decode_uris" => true)
1132
1132
  stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200", :include_entities => 1}).to_return(:body => fixture("statuses.json"))
1133
1133
  stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200", :max_id => "244099460672679937", :include_entities => 1}).to_return(:body => fixture("empty_array.json"))
1134
1134
  end
@@ -1206,7 +1206,7 @@ ID Posted at Screen name Text
1206
1206
  stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200"}).to_return(:status => 502)
1207
1207
  expect do
1208
1208
  @search.timeline("twitter")
1209
- end.to raise_error("Twitter is down or being upgraded.")
1209
+ end.to raise_error(Twitter::Error::BadGateway)
1210
1210
  expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200"})).to have_been_made.times(3)
1211
1211
  end
1212
1212
  end
@@ -1297,7 +1297,7 @@ ID Posted at Screen name Text
1297
1297
  stub_get("/1.1/statuses/user_timeline.json").with(:query => {:screen_name => "sferik", :count => "200"}).to_return(:status => 502)
1298
1298
  expect do
1299
1299
  @search.timeline("sferik", "twitter")
1300
- end.to raise_error("Twitter is down or being upgraded.")
1300
+ end.to raise_error(Twitter::Error::BadGateway)
1301
1301
  expect(a_get("/1.1/statuses/user_timeline.json").with(:query => {:screen_name => "sferik", :count => "200"})).to have_been_made.times(3)
1302
1302
  end
1303
1303
  end
@@ -1432,7 +1432,7 @@ ID Since Last tweeted at Tweets Favorites Listed Following...
1432
1432
  stub_get("/1.1/users/search.json").with(:query => {:page => "2", :q => "Erik", }).to_return(:status => 502)
1433
1433
  expect do
1434
1434
  @search.users("Erik")
1435
- end.to raise_error("Twitter is down or being upgraded.")
1435
+ end.to raise_error(Twitter::Error::BadGateway)
1436
1436
  expect(a_get("/1.1/users/search.json").with(:query => {:page => "2", :q => "Erik", })).to have_been_made.times(3)
1437
1437
  end
1438
1438
  end