jnunemaker-twitter 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
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