jnunemaker-twitter 0.6.14 → 0.6.15

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -5,22 +5,25 @@ 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"]
12
12
  gem.rubyforge_project = "twitter"
13
13
  gem.files = FileList["[A-Z]*", "{examples,lib,test}/**/*"]
14
14
 
15
- gem.add_dependency('oauth', '>= 0.3.4')
15
+ gem.add_dependency('oauth', '>= 0.3.5')
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,3 @@ 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
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :minor: 6
3
- :patch: 14
4
2
  :major: 0
3
+ :minor: 6
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.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'forwardable'
2
2
  require 'rubygems'
3
3
 
4
- gem 'oauth', '>= 0.3.4'
4
+ gem 'oauth', '>= 0.3.5'
5
5
  require 'oauth'
6
6
 
7
7
  gem 'mash', '0.0.3'
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
@@ -25,12 +31,12 @@ def twitter_url(url)
25
31
  end
26
32
 
27
33
  def stub_get(url, filename, status=nil)
28
- options = {:string => fixture_file(filename)}
34
+ options = {:body => fixture_file(filename)}
29
35
  options.merge!({:status => status}) unless status.nil?
30
36
 
31
37
  FakeWeb.register_uri(:get, twitter_url(url), options)
32
38
  end
33
39
 
34
40
  def stub_post(url, filename)
35
- FakeWeb.register_uri(:post, twitter_url(url), :string => fixture_file(filename))
41
+ FakeWeb.register_uri(:post, twitter_url(url), :body => fixture_file(filename))
36
42
  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: jnunemaker-twitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.14
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-08-16 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: mash
@@ -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: 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"
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
@@ -178,7 +169,7 @@ rubyforge_project: twitter
178
169
  rubygems_version: 1.3.5
179
170
  signing_key:
180
171
  specification_version: 3
181
- summary: wrapper for the twitter api (oauth only)
172
+ summary: wrapper for the twitter api
182
173
  test_files:
183
174
  - test/test_helper.rb
184
175
  - test/twitter/base_test.rb
@@ -193,6 +184,7 @@ test_files:
193
184
  - examples/helpers/config_store.rb
194
185
  - examples/httpauth.rb
195
186
  - examples/ids.rb
187
+ - examples/oauth.rb
196
188
  - examples/search.rb
197
189
  - examples/timeline.rb
198
190
  - examples/unauthorized.rb