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 +3 -0
- data/Rakefile +13 -43
- data/VERSION.yml +1 -1
- data/examples/oauth.rb +27 -0
- data/lib/twitter/oauth.rb +19 -4
- data/test/test_helper.rb +10 -4
- data/test/twitter/base_test.rb +1 -1
- data/test/twitter/httpauth_test.rb +1 -1
- data/test/twitter/oauth_test.rb +33 -6
- data/test/twitter/request_test.rb +1 -1
- data/test/twitter/search_test.rb +1 -1
- data/test/twitter/trends_test.rb +1 -1
- metadata +15 -24
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
|
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
|
-
|
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
|
-
|
68
|
-
|
69
|
-
|
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
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
|
24
|
-
|
23
|
+
def set_callback_url(url)
|
24
|
+
clear_request_token
|
25
|
+
request_token(:oauth_callback => url)
|
25
26
|
end
|
26
27
|
|
27
|
-
|
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
|
-
|
11
|
-
|
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
|
data/test/twitter/base_test.rb
CHANGED
data/test/twitter/oauth_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
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
|
-
|
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
|
64
|
+
access_token = mock('access token', :token => 'atoken', :secret => 'asecret')
|
45
65
|
request_token = mock('request token')
|
46
|
-
request_token.
|
47
|
-
|
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'
|
data/test/twitter/search_test.rb
CHANGED
data/test/twitter/trends_test.rb
CHANGED
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.
|
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-
|
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.
|
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:
|
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:
|
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:
|
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:
|
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:
|
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.
|
168
|
+
rubygems_version: 1.2.0
|
179
169
|
signing_key:
|
180
|
-
specification_version:
|
181
|
-
summary: wrapper for the twitter api
|
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
|