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 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
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 5
4
- :patch: 1
4
+ :patch: 2
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
@@ -51,13 +51,14 @@ module Twitter
51
51
  def raise_errors(response)
52
52
  case response.code.to_i
53
53
  when 400
54
- raise RateLimitExceeded.new(parse(response)), "(#{response.code}): #{response.message} - #{data['error']}"
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| Mash.new(item) }
77
+ obj.map { |item| make_mash_with_consistent_hash(item) }
77
78
  elsif obj.is_a?(Hash)
78
- Mash.new(obj)
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|
@@ -85,7 +85,9 @@ module Twitter
85
85
 
86
86
  def fetch(force=false)
87
87
  if @fetch.nil? || force
88
- response = self.class.get('http://search.twitter.com/search.json', :query => {:q => @query[:q].dup.join(' ')}, :format => :json)
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
 
@@ -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
@@ -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').query[:lang].should == '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).query[:rpp].should == 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).query[:page].should == 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).query[:since_id].should == 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').query[:geocode].should == '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.1
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-05 00:00:00 -07:00
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