rubytter 0.5.0 → 0.6.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/lib/rubytter.rb +35 -15
- data/spec/rubytter_spec.rb +43 -1
- metadata +2 -2
data/lib/rubytter.rb
CHANGED
@@ -16,7 +16,7 @@ class Rubytter
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
VERSION = '0.
|
19
|
+
VERSION = '0.6.0'
|
20
20
|
|
21
21
|
attr_reader :login
|
22
22
|
attr_accessor :host, :header
|
@@ -101,31 +101,51 @@ class Rubytter
|
|
101
101
|
send_direct_message(params.merge({:user => user, :text => text}))
|
102
102
|
end
|
103
103
|
|
104
|
-
def search(query, params = {})
|
105
|
-
path = '/search.json'
|
106
|
-
param_str = '?' + to_param_str(params.merge({:q => query}))
|
107
|
-
path = path + param_str unless param_str.empty?
|
108
|
-
req = create_request(Net::HTTP::Get.new(path), false)
|
109
|
-
http_request("search.#{@host}", req)
|
110
|
-
end
|
111
|
-
|
112
104
|
def get(path, params = {})
|
113
105
|
path += '.json'
|
114
106
|
param_str = '?' + to_param_str(params)
|
115
107
|
path = path + param_str unless param_str.empty?
|
116
108
|
req = create_request(Net::HTTP::Get.new(path))
|
117
|
-
http_request(@host, req)
|
109
|
+
json_to_struct(http_request(@host, req))
|
118
110
|
end
|
119
111
|
|
120
112
|
def post(path, params = {})
|
121
113
|
path += '.json'
|
122
114
|
param_str = to_param_str(params)
|
123
115
|
req = create_request(Net::HTTP::Post.new(path))
|
124
|
-
http_request(@host, req, param_str)
|
116
|
+
json_to_struct(http_request(@host, req, param_str))
|
125
117
|
end
|
126
|
-
|
127
118
|
alias delete post
|
128
119
|
|
120
|
+
def search(query, params = {})
|
121
|
+
path = '/search.json'
|
122
|
+
param_str = '?' + to_param_str(params.merge({:q => query}))
|
123
|
+
path = path + param_str unless param_str.empty?
|
124
|
+
req = create_request(Net::HTTP::Get.new(path), false)
|
125
|
+
json_data = http_request("search.#{@host}", req)
|
126
|
+
json_to_struct(
|
127
|
+
json_data['results'].map do |result|
|
128
|
+
search_result_to_struct(result)
|
129
|
+
end
|
130
|
+
)
|
131
|
+
end
|
132
|
+
|
133
|
+
def search_result_to_struct(json)
|
134
|
+
{
|
135
|
+
'id' => json['id'],
|
136
|
+
'text' => json['text'],
|
137
|
+
'source' => CGI.unescapeHTML(json['source']),
|
138
|
+
'in_reply_to_user_id' => json['to_usre_id'],
|
139
|
+
'in_reply_to_screen_name' => json['to_usre'],
|
140
|
+
'in_reply_to_status_id' => nil,
|
141
|
+
'user' => {
|
142
|
+
'id' => json['from_user_id'],
|
143
|
+
'screen_name' => json['from_user'],
|
144
|
+
'profile_image_url' => json['profile_image_url']
|
145
|
+
}
|
146
|
+
}
|
147
|
+
end
|
148
|
+
|
129
149
|
def http_request(host, req, param_str = nil)
|
130
150
|
res = @connection.start(host) do |http|
|
131
151
|
if param_str
|
@@ -134,12 +154,12 @@ class Rubytter
|
|
134
154
|
http.request(req)
|
135
155
|
end
|
136
156
|
end
|
137
|
-
|
157
|
+
json_data = JSON.parse(res.body)
|
138
158
|
case res.code
|
139
159
|
when "200"
|
140
|
-
|
160
|
+
json_data
|
141
161
|
else
|
142
|
-
raise APIError.new(
|
162
|
+
raise APIError.new(json_data['error'], res)
|
143
163
|
end
|
144
164
|
end
|
145
165
|
|
data/spec/rubytter_spec.rb
CHANGED
@@ -113,6 +113,7 @@ class Rubytter
|
|
113
113
|
@rubytter.should_receive(:http_request) do |host, req, param_str|
|
114
114
|
req.path.should == '/search.json?q=test'
|
115
115
|
host.should == 'search.twitter.com'
|
116
|
+
{'results' => []}
|
116
117
|
end
|
117
118
|
@rubytter.search('test')
|
118
119
|
end
|
@@ -122,13 +123,13 @@ class Rubytter
|
|
122
123
|
req.path.should =~ /\/search.json\?/
|
123
124
|
req.path.should =~ /q=test/
|
124
125
|
req.path.should =~ /lang=ja/
|
126
|
+
{'results' => []}
|
125
127
|
end
|
126
128
|
@rubytter.search('test', :lang => 'ja')
|
127
129
|
end
|
128
130
|
|
129
131
|
it 'should respond to to_param_str' do
|
130
132
|
param_str = @rubytter.to_param_str(:page => 2, :foo => 'bar')
|
131
|
-
p param_str
|
132
133
|
param_str.should =~ /^.+?=.+?&.+?=.+?$/
|
133
134
|
param_str.should =~ /page=2/
|
134
135
|
param_str.should =~ /foo=bar/
|
@@ -197,5 +198,46 @@ class Rubytter
|
|
197
198
|
rubytter.should_receive(:__update_status).with({:status => 'test', :source => "Foo"})
|
198
199
|
rubytter.update('test')
|
199
200
|
end
|
201
|
+
|
202
|
+
it 'should convert search results to struct' do
|
203
|
+
json_data = {
|
204
|
+
'id' => '123',
|
205
|
+
'text' => 'foo foo bar bar',
|
206
|
+
'source' => '<a href="http:\/\/twitter.com\/">web<\/a>',
|
207
|
+
'to_usre_id' => '20660692',
|
208
|
+
'to_usre' => 'jugyo_test',
|
209
|
+
'from_user_id' => '3748631',
|
210
|
+
'from_user' => 'jugyo',
|
211
|
+
'profile_image_url' => 'http://s3.amazonaws.com/twitter_production/profile_images/63467667/megane2_normal.png'
|
212
|
+
}
|
213
|
+
rubytter = Rubytter.new('test', 'teat')
|
214
|
+
result = rubytter.search_result_to_struct(json_data)
|
215
|
+
result['id'].should == '123'
|
216
|
+
result['text'].should == 'foo foo bar bar'
|
217
|
+
result['source'].should == "<a href=\"http:\\/\\/twitter.com\\/\">web<\\/a>"
|
218
|
+
result['in_reply_to_user_id'].should == '20660692'
|
219
|
+
result['in_reply_to_screen_name'].should == 'jugyo_test'
|
220
|
+
result['user']['id'].should == '3748631'
|
221
|
+
result['user']['screen_name'].should == 'jugyo'
|
222
|
+
result['user']['profile_image_url'].should == 'http://s3.amazonaws.com/twitter_production/profile_images/63467667/megane2_normal.png'
|
223
|
+
end
|
224
|
+
|
225
|
+
it 'should work search' do
|
226
|
+
json_data = JSON.parse open(File.dirname(__FILE__) + '/search.json').read
|
227
|
+
|
228
|
+
@rubytter.stub!(:http_request).and_return(json_data)
|
229
|
+
statuses = @rubytter.search('termtter')
|
230
|
+
status = statuses[0]
|
231
|
+
|
232
|
+
status.id.should == 1365281728
|
233
|
+
status.source.should == "<a href=\"http://twitter.com/\">web</a>"
|
234
|
+
status.text.should == "よし、add_hook 呼んでるところが無くなった #termtter"
|
235
|
+
status.in_reply_to_user_id.should == nil
|
236
|
+
status.in_reply_to_screen_name.should == nil
|
237
|
+
status.in_reply_to_status_id.should == nil
|
238
|
+
status.user.id.should == 74941
|
239
|
+
status.user.screen_name.should == "jugyo"
|
240
|
+
status.user.profile_image_url.should == "http://s3.amazonaws.com/twitter_production/profile_images/63467667/megane2_normal.png"
|
241
|
+
end
|
200
242
|
end
|
201
243
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubytter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jugyo
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-03-
|
12
|
+
date: 2009-03-21 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|