twurl 0.8.1 → 0.8.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/.travis.yml +2 -1
- data/Gemfile +8 -2
- data/README +10 -10
- data/lib/twurl/cli.rb +6 -4
- data/lib/twurl/version.rb +13 -6
- data/test/account_information_controller_test.rb +3 -3
- data/test/alias_controller_test.rb +1 -1
- data/test/authorization_controller_test.rb +1 -1
- data/test/cli_options_test.rb +1 -1
- data/test/cli_test.rb +1 -1
- data/test/configuration_controller_test.rb +2 -2
- data/test/oauth_client_test.rb +2 -2
- data/test/rcfile_test.rb +6 -6
- data/test/request_controller_test.rb +1 -1
- data/test/test_helper.rb +9 -10
- data/twurl.gemspec +23 -23
- metadata +10 -57
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
platforms :jruby
|
4
|
-
|
3
|
+
gem 'jruby-openssl', :platforms => :jruby
|
4
|
+
gem 'rake'
|
5
|
+
|
6
|
+
group :test do
|
7
|
+
gem 'coveralls', :require => false
|
8
|
+
gem 'minitest', '>= 5'
|
9
|
+
gem 'rr', '>= 1.1'
|
10
|
+
gem 'simplecov', :require => false
|
5
11
|
end
|
6
12
|
|
7
13
|
gemspec
|
data/README
CHANGED
@@ -24,8 +24,8 @@ When you have your consumer key and its secret you authorize
|
|
24
24
|
your Twitter account to make API requests with your consumer key
|
25
25
|
and secret.
|
26
26
|
|
27
|
-
% twurl authorize --consumer-key
|
28
|
-
--consumer-secret
|
27
|
+
% twurl authorize --consumer-key key \
|
28
|
+
--consumer-secret secret
|
29
29
|
|
30
30
|
This will return an URL that you should open up in your browser.
|
31
31
|
Authenticate to Twitter, and then enter the returned PIN back into
|
@@ -35,9 +35,9 @@ to make requests with the API. Twurl will tell you as much.
|
|
35
35
|
If your consumer application has xAuth enabled, then you can use
|
36
36
|
a variant of the above
|
37
37
|
|
38
|
-
% twurl authorize -u username -p password
|
39
|
-
--consumer-key
|
40
|
-
--consumer-secret
|
38
|
+
% twurl authorize -u username -p password \
|
39
|
+
--consumer-key key \
|
40
|
+
--consumer-secret secret
|
41
41
|
|
42
42
|
And, again assuming your username, password, key and secret is
|
43
43
|
correct, will authorize you in one step.
|
@@ -49,25 +49,25 @@ correct, will authorize you in one step.
|
|
49
49
|
The simplest request just requires that you specify the path you
|
50
50
|
want to request.
|
51
51
|
|
52
|
-
% twurl /1/statuses/home_timeline.
|
52
|
+
% twurl /1.1/statuses/home_timeline.json
|
53
53
|
|
54
54
|
Similar to curl, a GET request is performed by default.
|
55
55
|
|
56
56
|
You can implicitly perform a POST request by passing the -d option,
|
57
57
|
which specifies POST parameters.
|
58
58
|
|
59
|
-
% twurl -d 'status=Testing twurl' /1/statuses/update.
|
59
|
+
% twurl -d 'status=Testing twurl' /1.1/statuses/update.json
|
60
60
|
|
61
61
|
You can explicitly specify what request method to perform with
|
62
62
|
the -X (or --request-method) option.
|
63
63
|
|
64
|
-
% twurl -X
|
64
|
+
% twurl -X POST /1.1/statuses/destroy/1234567890.json
|
65
65
|
|
66
66
|
+------------------+
|
67
67
|
| Creating aliases |
|
68
68
|
+------------------+
|
69
69
|
|
70
|
-
% twurl alias h /1/statuses/home_timeline.
|
70
|
+
% twurl alias h /1.1/statuses/home_timeline.json
|
71
71
|
|
72
72
|
You can then use "h" in place of the full path.
|
73
73
|
|
@@ -77,7 +77,7 @@ Paths that require additional options such as request parameters for example can
|
|
77
77
|
be used with aliases the same as with full explicit paths, just as you might
|
78
78
|
expect.
|
79
79
|
|
80
|
-
% twurl alias tweet /1/statuses/update.
|
80
|
+
% twurl alias tweet /1.1/statuses/update.json
|
81
81
|
% twurl tweet -d "status=Aliases in twurl are convenient"
|
82
82
|
|
83
83
|
+-------------------------------+
|
data/lib/twurl/cli.rb
CHANGED
@@ -44,10 +44,12 @@ module Twurl
|
|
44
44
|
option_parser = OptionParser.new do |o|
|
45
45
|
o.extend AvailableOptions
|
46
46
|
|
47
|
-
o.banner =
|
48
|
-
|
49
|
-
|
50
|
-
|
47
|
+
o.banner = <<-BANNER
|
48
|
+
Usage: twurl authorize --consumer-key key --consumer-secret secret
|
49
|
+
twurl [options] /1.1/statuses/home_timeline.json
|
50
|
+
|
51
|
+
Supported Commands: #{SUPPORTED_COMMANDS.sort.join(', ')}
|
52
|
+
BANNER
|
51
53
|
|
52
54
|
o.section "Getting started:" do
|
53
55
|
tutorial
|
data/lib/twurl/version.rb
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
module Twurl
|
2
|
-
|
3
|
-
MAJOR
|
4
|
-
MINOR
|
5
|
-
PATCH
|
6
|
-
BETA
|
2
|
+
class Version
|
3
|
+
MAJOR = 0 unless defined? Twurl::Version::MAJOR
|
4
|
+
MINOR = 8 unless defined? Twurl::Version::MINOR
|
5
|
+
PATCH = 2 unless defined? Twurl::Version::PATCH
|
6
|
+
BETA = nil unless defined? Twurl::Version::BETA # Time.now.to_i.to_s
|
7
|
+
|
8
|
+
class << self
|
9
|
+
# @return [String]
|
10
|
+
def to_s
|
11
|
+
[MAJOR, MINOR, PATCH, BETA].compact.join('.')
|
12
|
+
end
|
13
|
+
end
|
7
14
|
end
|
8
15
|
|
9
|
-
|
16
|
+
VERSION = Version.to_s
|
10
17
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper'
|
2
2
|
|
3
|
-
class Twurl::AccountInformationController::DispatchWithNoAuthorizedAccountsTest <
|
3
|
+
class Twurl::AccountInformationController::DispatchWithNoAuthorizedAccountsTest < Minitest::Test
|
4
4
|
attr_reader :options, :client, :controller
|
5
5
|
def setup
|
6
6
|
@options = Twurl::Options.new
|
@@ -16,7 +16,7 @@ class Twurl::AccountInformationController::DispatchWithNoAuthorizedAccountsTest
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
class Twurl::AccountInformationController::DispatchWithOneAuthorizedAccountTest <
|
19
|
+
class Twurl::AccountInformationController::DispatchWithOneAuthorizedAccountTest < Minitest::Test
|
20
20
|
attr_reader :options, :client, :controller
|
21
21
|
def setup
|
22
22
|
@options = Twurl::Options.test_exemplar
|
@@ -34,7 +34,7 @@ class Twurl::AccountInformationController::DispatchWithOneAuthorizedAccountTest
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
class Twurl::AccountInformationController::DispatchWithOneUsernameThatHasAuthorizedMultipleAccountsTest <
|
37
|
+
class Twurl::AccountInformationController::DispatchWithOneUsernameThatHasAuthorizedMultipleAccountsTest < Minitest::Test
|
38
38
|
attr_reader :default_client_options, :default_client, :other_client_options, :other_client, :controller
|
39
39
|
def setup
|
40
40
|
@default_client_options = Twurl::Options.test_exemplar
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper'
|
2
2
|
|
3
|
-
class Twurl::AliasesController::DispatchTest <
|
3
|
+
class Twurl::AliasesController::DispatchTest < Minitest::Test
|
4
4
|
attr_reader :options, :client
|
5
5
|
def setup
|
6
6
|
@options = Twurl::Options.test_exemplar
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper'
|
2
2
|
|
3
|
-
class Twurl::AuthorizationController::DispatchTest <
|
3
|
+
class Twurl::AuthorizationController::DispatchTest < Minitest::Test
|
4
4
|
attr_reader :options, :client, :controller
|
5
5
|
def setup
|
6
6
|
@options = Twurl::Options.new
|
data/test/cli_options_test.rb
CHANGED
data/test/cli_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper'
|
2
2
|
|
3
|
-
class Twurl::CLI::OptionParsingTest <
|
3
|
+
class Twurl::CLI::OptionParsingTest < Minitest::Test
|
4
4
|
module CommandParsingTests
|
5
5
|
def test_no_command_specified_falls_to_default_command
|
6
6
|
options = Twurl::CLI.parse_options(['/1.1/url/does/not/matter.json'])
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper'
|
2
2
|
|
3
|
-
class Twurl::ConfigurationController::DispatchTest <
|
3
|
+
class Twurl::ConfigurationController::DispatchTest < Minitest::Test
|
4
4
|
def test_error_message_is_displayed_if_setting_is_unrecognized
|
5
5
|
options = Twurl::Options.test_exemplar
|
6
6
|
client = Twurl::OAuthClient.test_exemplar
|
@@ -15,7 +15,7 @@ class Twurl::ConfigurationController::DispatchTest < MiniTest::Unit::TestCase
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
class Twurl::ConfigurationController::DispatchDefaultSettingTest <
|
18
|
+
class Twurl::ConfigurationController::DispatchDefaultSettingTest < Minitest::Test
|
19
19
|
def test_setting_default_profile_just_by_username
|
20
20
|
options = Twurl::Options.test_exemplar
|
21
21
|
client = Twurl::OAuthClient.test_exemplar
|
data/test/oauth_client_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper'
|
2
2
|
|
3
|
-
class Twurl::OAuthClient::AbstractOAuthClientTest <
|
3
|
+
class Twurl::OAuthClient::AbstractOAuthClientTest < Minitest::Test
|
4
4
|
attr_reader :client, :options
|
5
5
|
def setup
|
6
6
|
Twurl::OAuthClient.instance_variable_set(:@rcfile, nil)
|
@@ -9,7 +9,7 @@ class Twurl::OAuthClient::AbstractOAuthClientTest < MiniTest::Unit::TestCase
|
|
9
9
|
@client = Twurl::OAuthClient.test_exemplar
|
10
10
|
options.base_url = 'api.twitter.com'
|
11
11
|
options.request_method = 'get'
|
12
|
-
options.path = '/path/does/not/matter.
|
12
|
+
options.path = '/path/does/not/matter.json'
|
13
13
|
options.data = {}
|
14
14
|
options.headers = {}
|
15
15
|
|
data/test/rcfile_test.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper'
|
2
2
|
|
3
|
-
class Twurl::RCFile::PathConstructionTest <
|
3
|
+
class Twurl::RCFile::PathConstructionTest < Minitest::Test
|
4
4
|
def test_file_path_appends_file_to_directory
|
5
5
|
assert_equal File.join(Twurl::RCFile.directory, Twurl::RCFile::FILE), Twurl::RCFile.file_path
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
class Twurl::RCFile::LoadingTest <
|
9
|
+
class Twurl::RCFile::LoadingTest < Minitest::Test
|
10
10
|
def test_load_parses_and_loads_file_if_it_exists
|
11
11
|
mock(YAML).load_file(Twurl::RCFile.file_path).times(1)
|
12
12
|
mock(Twurl::RCFile).default_rcfile_structure.never
|
@@ -22,7 +22,7 @@ class Twurl::RCFile::LoadingTest < MiniTest::Unit::TestCase
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
class Twurl::RCFile::InitializationTest <
|
25
|
+
class Twurl::RCFile::InitializationTest < Minitest::Test
|
26
26
|
def test_initializing_when_the_file_does_not_exist_loads_default_rcfile_structure
|
27
27
|
mock(YAML).load_file(Twurl::RCFile.file_path) { raise Errno::ENOENT }.times(1)
|
28
28
|
|
@@ -40,7 +40,7 @@ class Twurl::RCFile::InitializationTest < MiniTest::Unit::TestCase
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
class Twurl::RCFile::DefaultProfileFromDefaultRCFileTest <
|
43
|
+
class Twurl::RCFile::DefaultProfileFromDefaultRCFileTest < Minitest::Test
|
44
44
|
attr_reader :rcfile
|
45
45
|
def setup
|
46
46
|
mock(YAML).load_file(Twurl::RCFile.file_path) { raise Errno::ENOENT }.times(1)
|
@@ -66,7 +66,7 @@ class Twurl::RCFile::DefaultProfileFromDefaultRCFileTest < MiniTest::Unit::TestC
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
class Twurl::RCFile::UpdatingTest <
|
69
|
+
class Twurl::RCFile::UpdatingTest < Minitest::Test
|
70
70
|
attr_reader :rcfile
|
71
71
|
def setup
|
72
72
|
mock(YAML).load_file(Twurl::RCFile.file_path) { raise Errno::ENOENT }.times(1)
|
@@ -108,7 +108,7 @@ class Twurl::RCFile::UpdatingTest < MiniTest::Unit::TestCase
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
-
class Twurl::RCFile::SavingTest <
|
111
|
+
class Twurl::RCFile::SavingTest < Minitest::Test
|
112
112
|
attr_reader :rcfile
|
113
113
|
def setup
|
114
114
|
delete_rcfile
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper'
|
2
2
|
|
3
|
-
class Twurl::RequestController::AbstractTestCase <
|
3
|
+
class Twurl::RequestController::AbstractTestCase < Minitest::Test
|
4
4
|
attr_reader :options, :client, :controller
|
5
5
|
def setup
|
6
6
|
Twurl::CLI.output = StringIO.new
|
data/test/test_helper.rb
CHANGED
@@ -1,17 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
require 'simplecov'
|
2
|
+
require 'coveralls'
|
3
|
+
|
4
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
+
SimpleCov::Formatter::HTMLFormatter,
|
6
|
+
Coveralls::SimpleCov::Formatter
|
7
|
+
]
|
8
|
+
SimpleCov.start
|
9
|
+
|
7
10
|
require 'twurl'
|
8
11
|
require 'minitest/autorun'
|
9
12
|
require 'rr'
|
10
13
|
|
11
|
-
class MiniTest::Unit::TestCase
|
12
|
-
include RR::Adapters::TestUnit
|
13
|
-
end
|
14
|
-
|
15
14
|
Twurl::RCFile.directory = ENV['TMPDIR']
|
16
15
|
|
17
16
|
module Twurl
|
data/twurl.gemspec
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'twurl/version'
|
3
5
|
|
4
|
-
Gem::Specification.new do |
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
24
|
-
s.version = Twurl::Version
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.add_dependency 'oauth', '~> 0.4'
|
8
|
+
spec.add_development_dependency 'bundler', '~> 1.0'
|
9
|
+
spec.authors = ["Marcel Molina", "Erik Michaels-Ober"]
|
10
|
+
spec.description = %q{Curl for the Twitter API}
|
11
|
+
spec.email = ['marcel@twitter.com']
|
12
|
+
spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
13
|
+
spec.extra_rdoc_files = %w(COPYING INSTALL README)
|
14
|
+
spec.files = `git ls-files`.split("\n")
|
15
|
+
spec.homepage = 'http://github.com/marcel/twurl'
|
16
|
+
spec.licenses = ['MIT']
|
17
|
+
spec.name = 'twurl'
|
18
|
+
spec.rdoc_options = ['--title', 'twurl -- OAuth-enabled curl for the Twitter API', '--main', 'README', '--line-numbers', '--inline-source']
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
spec.required_rubygems_version = '>= 1.3.5'
|
21
|
+
spec.rubyforge_project = 'twurl'
|
22
|
+
spec.summary = spec.description
|
23
|
+
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
24
|
+
spec.version = Twurl::Version
|
25
25
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twurl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2013-06-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: oauth
|
@@ -29,69 +29,21 @@ dependencies:
|
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: '0.4'
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
|
-
name:
|
32
|
+
name: bundler
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
34
34
|
none: false
|
35
35
|
requirements:
|
36
|
-
- -
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: '0'
|
39
|
-
type: :development
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
|
-
requirements:
|
44
|
-
- - ! '>='
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '0'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: rr
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - ! '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
type: :development
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
|
-
requirements:
|
60
|
-
- - ! '>='
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
name: simplecov
|
65
|
-
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
|
-
requirements:
|
68
|
-
- - ! '>='
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: '0'
|
71
|
-
type: :development
|
72
|
-
prerelease: false
|
73
|
-
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
|
-
requirements:
|
76
|
-
- - ! '>='
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: '0'
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
name: minitest
|
81
|
-
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
|
-
requirements:
|
84
|
-
- - ! '>='
|
36
|
+
- - ~>
|
85
37
|
- !ruby/object:Gem::Version
|
86
|
-
version: '0'
|
38
|
+
version: '1.0'
|
87
39
|
type: :development
|
88
40
|
prerelease: false
|
89
41
|
version_requirements: !ruby/object:Gem::Requirement
|
90
42
|
none: false
|
91
43
|
requirements:
|
92
|
-
- -
|
44
|
+
- - ~>
|
93
45
|
- !ruby/object:Gem::Version
|
94
|
-
version: '0'
|
46
|
+
version: '1.0'
|
95
47
|
description: Curl for the Twitter API
|
96
48
|
email:
|
97
49
|
- marcel@twitter.com
|
@@ -135,7 +87,8 @@ files:
|
|
135
87
|
- test/test_helper.rb
|
136
88
|
- twurl.gemspec
|
137
89
|
homepage: http://github.com/marcel/twurl
|
138
|
-
licenses:
|
90
|
+
licenses:
|
91
|
+
- MIT
|
139
92
|
post_install_message:
|
140
93
|
rdoc_options:
|
141
94
|
- --title
|
@@ -157,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
110
|
requirements:
|
158
111
|
- - ! '>='
|
159
112
|
- !ruby/object:Gem::Version
|
160
|
-
version: 1.3.
|
113
|
+
version: 1.3.5
|
161
114
|
requirements: []
|
162
115
|
rubyforge_project: twurl
|
163
116
|
rubygems_version: 1.8.23
|