jnunemaker-twitter 0.5.1 → 0.5.2
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/History +8 -0
- data/Rakefile +7 -0
- data/VERSION.yml +1 -1
- data/examples/search.rb +6 -1
- data/lib/twitter/request.rb +15 -5
- data/lib/twitter/search.rb +3 -1
- data/test/twitter/base_test.rb +6 -0
- data/test/twitter/search_test.rb +15 -5
- metadata +77 -11
data/History
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
0.5.2 - April 8, 2009
|
2
|
+
* 4 minor fixes
|
3
|
+
* added mash as an install dependency, forgot it initially
|
4
|
+
* fixed that search wasn't taking into account a bunch of options duh!
|
5
|
+
* fixed some missing vars and stuff in exception raising
|
6
|
+
* added development dependencies to rake file to make that more explicit (technomancy)
|
7
|
+
* lame workaround for Mash#hash that allows using return objects in sets and such (technomancy)
|
8
|
+
|
1
9
|
0.5.1 - April 5, 2009
|
2
10
|
* 1 minor change
|
3
11
|
* Added data error hash returned from twitter to a few of the exceptions to help with debugging
|
data/Rakefile
CHANGED
@@ -13,7 +13,14 @@ begin
|
|
13
13
|
gem.files = FileList["[A-Z]*", "{examples,lib,test}/**/*"]
|
14
14
|
|
15
15
|
gem.add_dependency('oauth')
|
16
|
+
gem.add_dependency('mash')
|
16
17
|
gem.add_dependency('httparty', '>= 0.4.2')
|
18
|
+
|
19
|
+
gem.add_development_dependency('thoughtbot-shoulda')
|
20
|
+
gem.add_development_dependency('jeremymcanally-matchy')
|
21
|
+
gem.add_development_dependency('mocha')
|
22
|
+
gem.add_development_dependency('fakeweb')
|
23
|
+
gem.add_development_dependency('mash')
|
17
24
|
end
|
18
25
|
rescue LoadError
|
19
26
|
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
data/VERSION.yml
CHANGED
data/examples/search.rb
CHANGED
@@ -7,4 +7,9 @@ puts '*'*50, 'First Run', '*'*50
|
|
7
7
|
search.each { |result| pp result }
|
8
8
|
|
9
9
|
puts '*'*50, 'Second Run', '*'*50
|
10
|
-
search.each { |result| pp result }
|
10
|
+
search.each { |result| pp result }
|
11
|
+
|
12
|
+
puts '*'*50, 'Parameter Check', '*'*50
|
13
|
+
pp Twitter::Search.new('#austineats').fetch().results.first
|
14
|
+
pp Twitter::Search.new('#austineats').page(2).fetch().results.first
|
15
|
+
pp Twitter::Search.new('#austineats').since(1412737343).fetch().results.first
|
data/lib/twitter/request.rb
CHANGED
@@ -51,13 +51,14 @@ module Twitter
|
|
51
51
|
def raise_errors(response)
|
52
52
|
case response.code.to_i
|
53
53
|
when 400
|
54
|
-
|
54
|
+
data = parse(response)
|
55
|
+
raise RateLimitExceeded.new(data), "(#{response.code}): #{response.message} - #{data['error'] if data}"
|
55
56
|
when 401
|
56
57
|
data = parse(response)
|
57
|
-
raise Unauthorized.new(data), "(#{response.code}): #{response.message} - #{data['error']}"
|
58
|
+
raise Unauthorized.new(data), "(#{response.code}): #{response.message} - #{data['error'] if data}"
|
58
59
|
when 403
|
59
60
|
data = parse(response)
|
60
|
-
raise General.new(data), "(#{response.code}): #{response.message} - #{data['error']}"
|
61
|
+
raise General.new(data), "(#{response.code}): #{response.message} - #{data['error'] if data}"
|
61
62
|
when 404
|
62
63
|
raise NotFound, "(#{response.code}): #{response.message}"
|
63
64
|
when 500
|
@@ -73,13 +74,22 @@ module Twitter
|
|
73
74
|
|
74
75
|
def mash(obj)
|
75
76
|
if obj.is_a?(Array)
|
76
|
-
obj.map { |item|
|
77
|
+
obj.map { |item| make_mash_with_consistent_hash(item) }
|
77
78
|
elsif obj.is_a?(Hash)
|
78
|
-
|
79
|
+
make_mash_with_consistent_hash(obj)
|
79
80
|
else
|
80
81
|
obj
|
81
82
|
end
|
82
83
|
end
|
84
|
+
|
85
|
+
# Lame workaround for the fact that mash doesn't hash correctly
|
86
|
+
def make_mash_with_consistent_hash(obj)
|
87
|
+
m = Mash.new(obj)
|
88
|
+
def m.hash
|
89
|
+
inspect.hash
|
90
|
+
end
|
91
|
+
return m
|
92
|
+
end
|
83
93
|
|
84
94
|
def to_query(options)
|
85
95
|
options.inject([]) do |collection, opt|
|
data/lib/twitter/search.rb
CHANGED
@@ -85,7 +85,9 @@ module Twitter
|
|
85
85
|
|
86
86
|
def fetch(force=false)
|
87
87
|
if @fetch.nil? || force
|
88
|
-
|
88
|
+
query = @query.dup
|
89
|
+
query[:q] = query[:q].join(' ')
|
90
|
+
response = self.class.get('http://search.twitter.com/search.json', :query => query, :format => :json)
|
89
91
|
@fetch = Mash.new(response)
|
90
92
|
end
|
91
93
|
|
data/test/twitter/base_test.rb
CHANGED
@@ -69,6 +69,12 @@ class BaseTest < Test::Unit::TestCase
|
|
69
69
|
first.user.name.should == '-oAk-'
|
70
70
|
first.text.should == '@jnunemaker cold out today. cold yesterday. even colder today.'
|
71
71
|
end
|
72
|
+
|
73
|
+
should "correctly hash statuses" do
|
74
|
+
stub_get('/statuses/friends_timeline.json', 'friends_timeline.json')
|
75
|
+
hashes = @twitter.friends_timeline.map{ |s| s.hash }
|
76
|
+
hashes.should == @twitter.friends_timeline.map{ |s| s.hash }
|
77
|
+
end
|
72
78
|
end
|
73
79
|
end
|
74
80
|
end
|
data/test/twitter/search_test.rb
CHANGED
@@ -43,23 +43,33 @@ class SearchTest < Test::Unit::TestCase
|
|
43
43
|
end
|
44
44
|
|
45
45
|
should "should be able to specify the language" do
|
46
|
-
@search.lang('en')
|
46
|
+
@search.lang('en')
|
47
|
+
@search.class.expects(:get).with('http://search.twitter.com/search.json', :query => {:lang => 'en', :q => ''}, :format => :json).returns({'foo' => 'bar'})
|
48
|
+
@search.fetch()
|
47
49
|
end
|
48
50
|
|
49
51
|
should "should be able to specify the number of results per page" do
|
50
|
-
@search.per_page(25)
|
52
|
+
@search.per_page(25)
|
53
|
+
@search.class.expects(:get).with('http://search.twitter.com/search.json', :query => {:rpp => 25, :q => ''}, :format => :json).returns({'foo' => 'bar'})
|
54
|
+
@search.fetch()
|
51
55
|
end
|
52
56
|
|
53
57
|
should "should be able to specify the page number" do
|
54
|
-
@search.page(20)
|
58
|
+
@search.page(20)
|
59
|
+
@search.class.expects(:get).with('http://search.twitter.com/search.json', :query => {:page => 20, :q => ''}, :format => :json).returns({'foo' => 'bar'})
|
60
|
+
@search.fetch()
|
55
61
|
end
|
56
62
|
|
57
63
|
should "should be able to specify only returning results greater than an id" do
|
58
|
-
@search.since(1234)
|
64
|
+
@search.since(1234)
|
65
|
+
@search.class.expects(:get).with('http://search.twitter.com/search.json', :query => {:since_id => 1234, :q => ''}, :format => :json).returns({'foo' => 'bar'})
|
66
|
+
@search.fetch()
|
59
67
|
end
|
60
68
|
|
61
69
|
should "should be able to specify geo coordinates" do
|
62
|
-
@search.geocode('40.757929', '-73.985506', '25mi')
|
70
|
+
@search.geocode('40.757929', '-73.985506', '25mi')
|
71
|
+
@search.class.expects(:get).with('http://search.twitter.com/search.json', :query => {:geocode => '40.757929,-73.985506,25mi', :q => ''}, :format => :json).returns({'foo' => 'bar'})
|
72
|
+
@search.fetch()
|
63
73
|
end
|
64
74
|
|
65
75
|
should "should be able to clear the filters set" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jnunemaker-twitter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-08 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -22,6 +22,16 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
24
|
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: mash
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: httparty
|
27
37
|
type: :runtime
|
@@ -32,6 +42,56 @@ dependencies:
|
|
32
42
|
- !ruby/object:Gem::Version
|
33
43
|
version: 0.4.2
|
34
44
|
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: thoughtbot-shoulda
|
47
|
+
type: :development
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: "0"
|
54
|
+
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: jeremymcanally-matchy
|
57
|
+
type: :development
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: "0"
|
64
|
+
version:
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: mocha
|
67
|
+
type: :development
|
68
|
+
version_requirement:
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: "0"
|
74
|
+
version:
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: fakeweb
|
77
|
+
type: :development
|
78
|
+
version_requirement:
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: "0"
|
84
|
+
version:
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: mash
|
87
|
+
type: :development
|
88
|
+
version_requirement:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: "0"
|
94
|
+
version:
|
35
95
|
description:
|
36
96
|
email: nunemaker@gmail.com
|
37
97
|
executables: []
|
@@ -44,23 +104,20 @@ files:
|
|
44
104
|
- History
|
45
105
|
- License
|
46
106
|
- Notes
|
47
|
-
- Rakefile
|
48
107
|
- README.rdoc
|
108
|
+
- Rakefile
|
49
109
|
- VERSION.yml
|
50
110
|
- examples/connect.rb
|
51
111
|
- examples/friendship_existance.rb
|
52
|
-
- examples/helpers
|
53
112
|
- examples/helpers/config_store.rb
|
54
113
|
- examples/search.rb
|
55
114
|
- examples/timeline.rb
|
56
115
|
- examples/update.rb
|
57
|
-
- lib/twitter
|
116
|
+
- lib/twitter.rb
|
58
117
|
- lib/twitter/base.rb
|
59
118
|
- lib/twitter/oauth.rb
|
60
119
|
- lib/twitter/request.rb
|
61
120
|
- lib/twitter/search.rb
|
62
|
-
- lib/twitter.rb
|
63
|
-
- test/fixtures
|
64
121
|
- test/fixtures/firehose.json
|
65
122
|
- test/fixtures/friends_timeline.json
|
66
123
|
- test/fixtures/rate_limit_exceeded.json
|
@@ -70,7 +127,6 @@ files:
|
|
70
127
|
- test/fixtures/status.json
|
71
128
|
- test/fixtures/user_timeline.json
|
72
129
|
- test/test_helper.rb
|
73
|
-
- test/twitter
|
74
130
|
- test/twitter/base_test.rb
|
75
131
|
- test/twitter/oauth_test.rb
|
76
132
|
- test/twitter/request_test.rb
|
@@ -80,7 +136,6 @@ has_rdoc: true
|
|
80
136
|
homepage: http://github.com/jnunemaker/twitter
|
81
137
|
post_install_message:
|
82
138
|
rdoc_options:
|
83
|
-
- --inline-source
|
84
139
|
- --charset=UTF-8
|
85
140
|
require_paths:
|
86
141
|
- lib
|
@@ -103,5 +158,16 @@ rubygems_version: 1.2.0
|
|
103
158
|
signing_key:
|
104
159
|
specification_version: 2
|
105
160
|
summary: wrapper for the twitter api (oauth only)
|
106
|
-
test_files:
|
107
|
-
|
161
|
+
test_files:
|
162
|
+
- test/test_helper.rb
|
163
|
+
- test/twitter/base_test.rb
|
164
|
+
- test/twitter/oauth_test.rb
|
165
|
+
- test/twitter/request_test.rb
|
166
|
+
- test/twitter/search_test.rb
|
167
|
+
- test/twitter_test.rb
|
168
|
+
- examples/connect.rb
|
169
|
+
- examples/friendship_existance.rb
|
170
|
+
- examples/helpers/config_store.rb
|
171
|
+
- examples/search.rb
|
172
|
+
- examples/timeline.rb
|
173
|
+
- examples/update.rb
|