oauth-cli 0.0.4 → 0.0.5
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/README.rdoc +4 -0
- data/Rakefile +1 -1
- data/bin/oauthc +35 -23
- data/lib/oauth_cli.rb +16 -4
- data/oauth-cli.gemspec +2 -2
- data/test/test_oauth_cli.rb +10 -0
- data/test/test_oauthc.rb +4 -4
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +0 -0
data/README.rdoc
CHANGED
@@ -72,6 +72,10 @@ oauthc was originally developed to test the {Qype API}[http://www.qype.com/devel
|
|
72
72
|
==== What's the difference to the client provided by oauth gem?
|
73
73
|
problem with oauth cli client provided with the gem is the lack of post request with body content as well as easy usage with repl to have proper CLI options
|
74
74
|
|
75
|
+
==== Are there other clients of similar manner?
|
76
|
+
Yes: http://github.com/marcel/twurl
|
77
|
+
Very similar but Twitter specific. I whish I'd spot this project earlier ;-)
|
78
|
+
|
75
79
|
|
76
80
|
== Copyright
|
77
81
|
The MIT License
|
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new('oauth-cli', '0.0.
|
5
|
+
Echoe.new('oauth-cli', '0.0.5') do |p|
|
6
6
|
p.description = "A simple CLI client to test your oauth API easily"
|
7
7
|
p.url = "http://github.com/rngtng/oauth-cli"
|
8
8
|
p.author = "rngtng - Tobias Bielohlawek"
|
data/bin/oauthc
CHANGED
@@ -14,7 +14,7 @@ CFG_FILE = ENV['OAUTHC_CONFIG_FILE'] || File.expand_path('~/.oauthconfig')
|
|
14
14
|
|
15
15
|
def show_help
|
16
16
|
say <<-help
|
17
|
-
oauthc version 0.0.
|
17
|
+
oauthc version 0.0.5
|
18
18
|
Usage: oauthc [options] [http_method_verb uri [body]]
|
19
19
|
|
20
20
|
Options:
|
@@ -52,36 +52,46 @@ Interactive Commands:
|
|
52
52
|
help
|
53
53
|
end
|
54
54
|
|
55
|
-
if ARGV.
|
55
|
+
if ARGV.any? { |arg| %w(-h --help -help help).include?(arg) }
|
56
56
|
show_help
|
57
57
|
end
|
58
58
|
|
59
59
|
#parse CLI input
|
60
|
-
opt =
|
61
|
-
|
62
|
-
|
63
|
-
false
|
64
|
-
end
|
65
|
-
profile = opt[:profile] || opt[:p] #shortcut for profile
|
60
|
+
method, uri, body, opt, profile = OauthCli.parse_args(ARGV)
|
61
|
+
|
62
|
+
@profiles = YAML.load_file(CFG_FILE) if File.exists?(CFG_FILE)
|
66
63
|
|
67
|
-
#
|
68
|
-
if profile
|
69
|
-
|
70
|
-
|
71
|
-
show_help
|
64
|
+
#find default profile
|
65
|
+
if @profiles && (profile.nil? || @profiles[profile].nil?)
|
66
|
+
@profiles.each do |key, values|
|
67
|
+
profile = key if values['default']
|
72
68
|
end
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
69
|
+
end
|
70
|
+
|
71
|
+
#give profile selection
|
72
|
+
if @profiles && (profile.nil? || @profiles[profile].nil?)
|
73
|
+
say " <%= 'Select one of the available profiles" #" or leave empty to create new one' %>"
|
74
|
+
@nr_profiles = @profiles.map
|
75
|
+
#say " <%= ' 0. - create new one -' %>"
|
76
|
+
@nr_profiles.each_with_index do |profile, index|
|
77
|
+
say " <%= ' #{index+1}. #{profile.first}' %>"
|
80
78
|
end
|
79
|
+
profile = ask ' >> '
|
80
|
+
profile = @nr_profiles[profile.to_i-1].first if profile == profile.to_i.to_s && @nr_profiles[profile.to_i-1]
|
81
|
+
end
|
81
82
|
|
82
|
-
|
83
|
+
@profiles[profile].each { |key, value| opt[key.to_sym] = value } if @profiles[profile] #symbolize_keys
|
84
|
+
|
85
|
+
if opt[:host].to_s.empty? || opt[:consumer_key].to_s.empty? || opt[:consumer_secret].to_s.empty?
|
86
|
+
|
83
87
|
end
|
84
88
|
|
89
|
+
# unless cfg_options[profile]
|
90
|
+
# say " <%= color('# ERROR: Profile #{profile} not found', RED) %>"
|
91
|
+
# show_help
|
92
|
+
# end
|
93
|
+
#
|
94
|
+
|
85
95
|
######## CREATE client
|
86
96
|
|
87
97
|
@client = OauthCli.new(opt)
|
@@ -117,6 +127,8 @@ if !ENV['__REPL_WRAPPED'] && system("which rlwrap > /dev/null 2> /dev/null")
|
|
117
127
|
rlargs = ""
|
118
128
|
#rlargs << " -f #{cfile}" if cfile
|
119
129
|
rlargs << " -H #{hfile}" if hfile
|
130
|
+
|
131
|
+
ARGV << "-p=#{profile}" if profile
|
120
132
|
|
121
133
|
exec "rlwrap #{rlargs} #$0 #{ARGV.join(' ')}"
|
122
134
|
end
|
@@ -127,10 +139,10 @@ loop do
|
|
127
139
|
|
128
140
|
begin
|
129
141
|
command, uri, body = $stdin.gets.chomp.split(' ')
|
130
|
-
|
142
|
+
|
131
143
|
next warn(show_commands) if command =~ /^(help|\?)$/
|
132
144
|
next warn("Use Ctrl-D (i.e. EOF) to exit") if command =~ /^(exit|quit)$/
|
133
|
-
|
145
|
+
|
134
146
|
@client.request(command, uri, body)
|
135
147
|
next
|
136
148
|
rescue NoMethodError, Interrupt
|
data/lib/oauth_cli.rb
CHANGED
@@ -20,14 +20,14 @@ class OauthCli
|
|
20
20
|
color = 'YELLOW'
|
21
21
|
say " <%= color('# -------------------------------------------------------------------------', #{color}) %>"
|
22
22
|
say " <%= color('# no consumer_key provided, please create a profile or call the script with:', #{color}) %>"
|
23
|
-
say " <%= color('# oauthc --consumer_key
|
23
|
+
say " <%= color('# oauthc --consumer_key <consumer_key> --consumer_secret <consumer_secret>', #{color}) %>"
|
24
24
|
say " <%= color('# -------------------------------------------------------------------------', #{color}) %>"
|
25
25
|
#please get a key here: #{options[:host]}/api_consumers"
|
26
26
|
return
|
27
27
|
end
|
28
28
|
|
29
29
|
#add http if missing
|
30
|
-
[:host, :
|
30
|
+
[:host, :reg_url, :auth_url].each do |key|
|
31
31
|
@options[key] = "http://#{@options[key]}" unless @options[key] =~ /^http/
|
32
32
|
end
|
33
33
|
|
@@ -35,13 +35,23 @@ class OauthCli
|
|
35
35
|
@access_token = OAuth::AccessToken.new(@consumer, @options[:token], @options[:token_secret]) if @options[:token]
|
36
36
|
end
|
37
37
|
|
38
|
+
def self.parse_args(args, opt = {}, last_arg = nil)
|
39
|
+
method, uri, body = args.clone.delete_if do |kv|
|
40
|
+
next opt[$1.to_sym] = $2 if kv =~ /-?-([^=]+)=(.+)$/ #catches --param=value
|
41
|
+
next opt[last_arg] = kv if last_arg && !opt[last_arg] #catches value
|
42
|
+
next last_arg = $1.to_sym if kv =~ /^-?-(.+)$/ #catches --param
|
43
|
+
false
|
44
|
+
end
|
45
|
+
[method, uri, body, opt, (opt.delete(:profile) || opt.delete(:p))]
|
46
|
+
end
|
47
|
+
|
38
48
|
def request(method, uri, body = nil)
|
39
49
|
if method =~ /auth/
|
40
50
|
@request_token = @consumer.get_request_token({}, "oauth_callback" => "oob")
|
41
|
-
@options[:
|
51
|
+
@options[:auth_url] ||= "#{@options[:host].gsub('api.', 'www.').gsub('v1/', '')}/mobile/authorize" #That's for Qype only!!
|
42
52
|
color = 'YELLOW'
|
43
53
|
say " <%= color('# To authorize, go to ...', #{color}) %>"
|
44
|
-
say " <%= '# ' + color('#{@options[:
|
54
|
+
say " <%= '# ' + color('#{@options[:auth_url]}?oauth_token=#{@request_token.token}', BOLD, UNDERLINE) %>\n"
|
45
55
|
say " <%= color('# ... and enter given token verifier:', #{color}) %>"
|
46
56
|
verifier = ask " |-- verifier >> "
|
47
57
|
|
@@ -55,6 +65,8 @@ class OauthCli
|
|
55
65
|
say " <%= color('# -------------------------------------------------------------------------', #{color}) %>"
|
56
66
|
say " <%= color('# Authorization SUCCESSFUL', BOLD, #{color}) %>"
|
57
67
|
say " <%= color('# -------------------------------------------------------------------------', #{color}) %>"
|
68
|
+
say " <%= color(' token: #{@access_token.token}', #{color}) %>"
|
69
|
+
say " <%= color(' token_secret: #{@access_token.secret}', #{color}) %>"
|
58
70
|
rescue
|
59
71
|
color = 'RED'
|
60
72
|
say " <%= color('# -------------------------------------------------------------------------', #{color}) %>"
|
data/oauth-cli.gemspec
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{oauth-cli}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["rngtng - Tobias Bielohlawek"]
|
9
9
|
s.cert_chain = ["/Users/tobiasb/.ssh/gem-public_cert.pem"]
|
10
|
-
s.date = %q{2010-04-
|
10
|
+
s.date = %q{2010-04-28}
|
11
11
|
s.default_executable = %q{oauthc}
|
12
12
|
s.description = %q{A simple CLI client to test your oauth API easily}
|
13
13
|
s.email = %q{tobi @nospam@ rngtng.com}
|
data/test/test_oauth_cli.rb
CHANGED
@@ -8,6 +8,16 @@ class TestOauthCli < Test::Unit::TestCase
|
|
8
8
|
assert @client
|
9
9
|
end
|
10
10
|
|
11
|
+
def test_should_parse_args_with_equal
|
12
|
+
args = %w(--profile=test -host=http://host.com get /users?name=test my_body)
|
13
|
+
assert_equal ['get', '/users?name=test', 'my_body', {:host => 'http://host.com'}, 'test'], OauthCli.parse_args(args)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_parse_args_without_equal_and_body
|
17
|
+
args = %w(-p test --host http://host.com get /users?name=test)
|
18
|
+
assert_equal ['get', '/users?name=test', nil, {:host => 'http://host.com'}, 'test'], OauthCli.parse_args(args)
|
19
|
+
end
|
20
|
+
|
11
21
|
def test_should_add_http_to_host
|
12
22
|
opt = { :host => "api.bbc.com", :auth_host => "http://test.domain", :reg_host => "https://test.domain", :consumer_key => "dummy_key"}
|
13
23
|
@client = OauthCli.new(opt)
|
data/test/test_oauthc.rb
CHANGED
@@ -5,14 +5,14 @@ class TestOauthCli < Test::Unit::TestCase
|
|
5
5
|
def setup
|
6
6
|
@oauthc = File.dirname(File.dirname(__FILE__)) + "/bin/oauthc"
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
def test_should_show_help
|
10
|
-
output = `#{@oauthc}`
|
10
|
+
output = `#{@oauthc} -h`
|
11
11
|
assert output =~ /Usage: oauthc/
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
output = `#{@oauthc} -p
|
14
|
+
def _test_should_show_error_on_profile
|
15
|
+
output = `#{@oauthc} -p unknown`
|
16
16
|
assert output =~ /Profile unknown not found/
|
17
17
|
end
|
18
18
|
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- rngtng - Tobias Bielohlawek
|
@@ -34,7 +34,7 @@ cert_chain:
|
|
34
34
|
I5mOkC+DmQeKRCyukHoWnysL5IyK+l7JEPymkOlNWkl006u5rNu/d7LJJW19+ZvC
|
35
35
|
-----END CERTIFICATE-----
|
36
36
|
|
37
|
-
date: 2010-04-
|
37
|
+
date: 2010-04-28 00:00:00 +02:00
|
38
38
|
default_executable: oauthc
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
metadata.gz.sig
CHANGED
Binary file
|