erwaller-twitter 0.6.13.1 → 0.6.15

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,6 @@
1
+ 0.6.14 - August 16, 2009
2
+ * Lowered the oauth requirement to 0.3.4 as people are complaining about 0.3.5
3
+
1
4
  0.6.13 - July 27, 2009
2
5
  * 1 minor update
3
6
  * Set oauth version to >= 0.3.5 so I don't have to release new gem for each oauth update, which seems to be frequent of late
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ begin
5
5
  require 'jeweler'
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "twitter"
8
- gem.summary = %Q{wrapper for the twitter api (oauth only)}
8
+ gem.summary = %Q{wrapper for the twitter api}
9
9
  gem.email = "nunemaker@gmail.com"
10
10
  gem.homepage = "http://github.com/jnunemaker/twitter"
11
11
  gem.authors = ["John Nunemaker"]
@@ -16,11 +16,14 @@ begin
16
16
  gem.add_dependency('mash', '0.0.3')
17
17
  gem.add_dependency('httparty', '0.4.3')
18
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')
19
+ gem.add_development_dependency('thoughtbot-shoulda', '>= 2.10.1')
20
+ gem.add_development_dependency('jeremymcanally-matchy', '0.4.0')
21
+ gem.add_development_dependency('mocha', '0.9.4')
22
+ gem.add_development_dependency('fakeweb', '>= 1.2.5')
23
+ end
24
+
25
+ Jeweler::RubyforgeTasks.new do |rubyforge|
26
+ # rubyforge.doc_task = "rdoc"
24
27
  end
25
28
  rescue LoadError
26
29
  puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
@@ -64,40 +67,7 @@ Rake::RDocTask.new do |rdoc|
64
67
  rdoc.rdoc_files.include('lib/**/*.rb')
65
68
  end
66
69
 
67
- begin
68
- require 'rake/contrib/sshpublisher'
69
- namespace :rubyforge do
70
-
71
- desc "Release gem and RDoc documentation to RubyForge"
72
- task :release => ["rubyforge:release:gem", "rubyforge:release:website", "rubyforge:release:docs"]
73
-
74
- namespace :release do
75
- desc "Publish RDoc to RubyForge."
76
- task :docs => [:rdoc] do
77
- config = YAML.load(
78
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
79
- )
80
-
81
- host = "#{config['username']}@rubyforge.org"
82
- remote_dir = "/var/www/gforge-projects/twitter/rdoc"
83
- local_dir = 'rdoc'
84
-
85
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
86
- end
87
-
88
- task :website do
89
- config = YAML.load(
90
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
91
- )
92
-
93
- host = "#{config['username']}@rubyforge.org"
94
- remote_dir = "/var/www/gforge-projects/twitter/"
95
- local_dir = 'website'
96
-
97
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
98
- end
99
- end
100
- end
101
- rescue LoadError
102
- puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
103
- end
70
+ desc 'Upload website files to rubyforge'
71
+ task :website do
72
+ sh %{rsync -av website/ jnunemaker@rubyforge.org:/var/www/gforge-projects/twitter}
73
+ end
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 6
4
- :patch: 13
4
+ :patch: 15
data/examples/oauth.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'pp'
2
+ require 'pathname'
3
+ dir = Pathname(__FILE__).dirname.expand_path
4
+ require (dir + '..' + 'lib' + 'twitter').expand_path
5
+ require dir + 'helpers' + 'config_store'
6
+
7
+ config = ConfigStore.new("#{ENV['HOME']}/.twitter")
8
+ oauth = Twitter::OAuth.new(config['token'], config['secret'])
9
+ rtoken = oauth.request_token.token
10
+ rsecret = oauth.request_token.secret
11
+
12
+ puts "> redirecting you to twitter to authorize..."
13
+ %x(open #{oauth.request_token.authorize_url})
14
+
15
+ print "> what was the PIN twitter provided you with? "
16
+ pin = gets.chomp
17
+
18
+ begin
19
+ oauth.authorize_from_request(rtoken, rsecret, pin)
20
+
21
+ twitter = Twitter::Base.new(oauth)
22
+ twitter.user_timeline.each do |tweet|
23
+ puts "#{tweet.user.screen_name}: #{tweet.text}"
24
+ end
25
+ rescue OAuth::Unauthorized
26
+ puts "> FAIL!"
27
+ end
data/lib/twitter/oauth.rb CHANGED
@@ -20,13 +20,23 @@ module Twitter
20
20
  @consumer ||= ::OAuth::Consumer.new(@ctoken, @csecret, {:site => 'http://twitter.com'}.merge(consumer_options))
21
21
  end
22
22
 
23
- def request_token
24
- @request_token ||= consumer.get_request_token
23
+ def set_callback_url(url)
24
+ clear_request_token
25
+ request_token(:oauth_callback => url)
25
26
  end
26
27
 
27
- def authorize_from_request(rtoken, rsecret)
28
+ # Note: If using oauth with a web app, be sure to provide :oauth_callback.
29
+ # Options:
30
+ # :oauth_callback => String, url that twitter should redirect to
31
+ def request_token(options={})
32
+ @request_token ||= consumer.get_request_token(options)
33
+ end
34
+
35
+ # For web apps use params[:oauth_verifier], for desktop apps,
36
+ # use the verifier is the pin that twitter gives users.
37
+ def authorize_from_request(rtoken, rsecret, verifier_or_pin)
28
38
  request_token = ::OAuth::RequestToken.new(consumer, rtoken, rsecret)
29
- access_token = request_token.get_access_token
39
+ access_token = request_token.get_access_token(:oauth_verifier => verifier_or_pin)
30
40
  @atoken, @asecret = access_token.token, access_token.secret
31
41
  end
32
42
 
@@ -37,5 +47,10 @@ module Twitter
37
47
  def authorize_from_access(atoken, asecret)
38
48
  @atoken, @asecret = atoken, asecret
39
49
  end
50
+
51
+ private
52
+ def clear_request_token
53
+ @request_token = nil
54
+ end
40
55
  end
41
56
  end
data/test/test_helper.rb CHANGED
@@ -1,5 +1,12 @@
1
- require 'rubygems'
2
1
  require 'test/unit'
2
+ require 'pathname'
3
+ require 'rubygems'
4
+
5
+ gem 'thoughtbot-shoulda', '>= 2.10.1'
6
+ gem 'jnunemaker-matchy', '0.4.0'
7
+ gem 'mocha', '0.9.4'
8
+ gem 'fakeweb', '>= 1.2.5'
9
+
3
10
  require 'shoulda'
4
11
  require 'matchy'
5
12
  require 'mocha'
@@ -7,9 +14,8 @@ require 'fakeweb'
7
14
 
8
15
  FakeWeb.allow_net_connect = false
9
16
 
10
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
11
- $LOAD_PATH.unshift(File.dirname(__FILE__))
12
- require 'twitter'
17
+ dir = (Pathname(__FILE__).dirname + '../lib').expand_path
18
+ require dir + 'twitter'
13
19
 
14
20
  class Test::Unit::TestCase
15
21
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
1
+ require 'test_helper'
2
2
 
3
3
  class BaseTest < Test::Unit::TestCase
4
4
  context "base" do
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
1
+ require 'test_helper'
2
2
 
3
3
  class HTTPAuthTest < Test::Unit::TestCase
4
4
  context "Creating new instance" do
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
1
+ require 'test_helper'
2
2
 
3
3
  class OAuthTest < Test::Unit::TestCase
4
4
  should "initialize with consumer token and secret" do
@@ -36,17 +36,44 @@ class OAuthTest < Test::Unit::TestCase
36
36
  twitter.request_token.should == request_token
37
37
  end
38
38
 
39
- should "be able to create access token from request token and secret" do
39
+ context "set_callback_url" do
40
+ should "clear request token and set the callback url" do
41
+ consumer = mock('oauth consumer')
42
+ request_token = mock('request token')
43
+
44
+ OAuth::Consumer.
45
+ expects(:new).
46
+ with('token', 'secret', {:site => 'http://twitter.com'}).
47
+ returns(consumer)
48
+
49
+ twitter = Twitter::OAuth.new('token', 'secret')
50
+
51
+ consumer.
52
+ expects(:get_request_token).
53
+ with({:oauth_callback => 'http://myapp.com/oauth_callback'})
54
+
55
+ twitter.set_callback_url('http://myapp.com/oauth_callback')
56
+ end
57
+ end
58
+
59
+ should "be able to create access token from request token, request secret and verifier" do
40
60
  twitter = Twitter::OAuth.new('token', 'secret')
41
61
  consumer = OAuth::Consumer.new('token', 'secret', {:site => 'http://twitter.com'})
42
62
  twitter.stubs(:consumer).returns(consumer)
43
63
 
44
- access_token = mock('access token', :token => 'atoken', :secret => 'asecret')
64
+ access_token = mock('access token', :token => 'atoken', :secret => 'asecret')
45
65
  request_token = mock('request token')
46
- request_token.expects(:get_access_token).returns(access_token)
47
- OAuth::RequestToken.expects(:new).with(consumer, 'rtoken', 'rsecret').returns(request_token)
66
+ request_token.
67
+ expects(:get_access_token).
68
+ with(:oauth_verifier => 'verifier').
69
+ returns(access_token)
70
+
71
+ OAuth::RequestToken.
72
+ expects(:new).
73
+ with(consumer, 'rtoken', 'rsecret').
74
+ returns(request_token)
48
75
 
49
- twitter.authorize_from_request('rtoken', 'rsecret')
76
+ twitter.authorize_from_request('rtoken', 'rsecret', 'verifier')
50
77
  twitter.access_token.class.should be(OAuth::AccessToken)
51
78
  twitter.access_token.token.should == 'atoken'
52
79
  twitter.access_token.secret.should == 'asecret'
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
1
+ require 'test_helper'
2
2
 
3
3
  class RequestTest < Test::Unit::TestCase
4
4
  context "new get request" do
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
1
+ require 'test_helper'
2
2
 
3
3
  class SearchTest < Test::Unit::TestCase
4
4
  context "searching" do
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
1
+ require 'test_helper'
2
2
 
3
3
  class TrendsTest < Test::Unit::TestCase
4
4
  include Twitter
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erwaller-twitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.13.1
4
+ version: 0.6.15
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-07-27 00:00:00 -07:00
12
+ date: 2009-08-23 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.3.4
23
+ version: 0.3.5
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: peterpunk-mhash
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: "0"
53
+ version: 2.10.1
54
54
  version:
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: jeremymcanally-matchy
@@ -58,9 +58,9 @@ dependencies:
58
58
  version_requirement:
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ">="
61
+ - - "="
62
62
  - !ruby/object:Gem::Version
63
- version: "0"
63
+ version: 0.4.0
64
64
  version:
65
65
  - !ruby/object:Gem::Dependency
66
66
  name: mocha
@@ -68,9 +68,9 @@ dependencies:
68
68
  version_requirement:
69
69
  version_requirements: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - ">="
71
+ - - "="
72
72
  - !ruby/object:Gem::Version
73
- version: "0"
73
+ version: 0.9.4
74
74
  version:
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: fakeweb
@@ -80,17 +80,7 @@ dependencies:
80
80
  requirements:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: "0"
84
- version:
85
- - !ruby/object:Gem::Dependency
86
- name: peterpunk-mhash
87
- type: :development
88
- version_requirement:
89
- version_requirements: !ruby/object:Gem::Requirement
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- version: "0"
83
+ version: 1.2.5
94
84
  version:
95
85
  description:
96
86
  email: nunemaker@gmail.com
@@ -112,6 +102,7 @@ files:
112
102
  - examples/helpers/config_store.rb
113
103
  - examples/httpauth.rb
114
104
  - examples/ids.rb
105
+ - examples/oauth.rb
115
106
  - examples/search.rb
116
107
  - examples/timeline.rb
117
108
  - examples/unauthorized.rb
@@ -152,9 +143,8 @@ files:
152
143
  - test/twitter/search_test.rb
153
144
  - test/twitter/trends_test.rb
154
145
  - test/twitter_test.rb
155
- has_rdoc: true
146
+ has_rdoc: false
156
147
  homepage: http://github.com/jnunemaker/twitter
157
- licenses:
158
148
  post_install_message:
159
149
  rdoc_options:
160
150
  - --charset=UTF-8
@@ -175,10 +165,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
165
  requirements: []
176
166
 
177
167
  rubyforge_project: twitter
178
- rubygems_version: 1.3.5
168
+ rubygems_version: 1.2.0
179
169
  signing_key:
180
- specification_version: 2
181
- summary: wrapper for the twitter api (oauth only)
170
+ specification_version: 3
171
+ summary: wrapper for the twitter api
182
172
  test_files:
183
173
  - test/test_helper.rb
184
174
  - test/twitter/base_test.rb
@@ -193,6 +183,7 @@ test_files:
193
183
  - examples/helpers/config_store.rb
194
184
  - examples/httpauth.rb
195
185
  - examples/ids.rb
186
+ - examples/oauth.rb
196
187
  - examples/search.rb
197
188
  - examples/timeline.rb
198
189
  - examples/unauthorized.rb