faraday-cli 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a7d7f7b331f42287d4e254f99ed969523bfa8b00
4
- data.tar.gz: a0e11ea299acc38652d59ed5a31e03b250dfbbac
3
+ metadata.gz: 8f4d394529ed718ce41e89f26fb9263c3ebaaf07
4
+ data.tar.gz: 26d37f005429916ac2991e7c80f4bc182d291414
5
5
  SHA512:
6
- metadata.gz: f02c69445e412156866be56c6f137b2d19783dd37315f559beac5efe1ca1ca52aff2dc23e194e93560d7b8b2fcd375e9c43ec0c6d7bc39d562c17d2127adca9d
7
- data.tar.gz: b43111af4766aa36d744f4108d50bc72333f967752532ce6c3731735f1eb047eee65bfa554ec8a4ea238a96859d1fcc52c349acb708fadf8888059b24eabbb50
6
+ metadata.gz: 6db00733558102de7f8b984db34d53ad9e369ef1cc352d14f02da469d6e426fa8d6b8c4b51ff995c6e1c521bb802fa0c47a122061e670c84efe6232ff6a028a7
7
+ data.tar.gz: 380aab8b2a7cdd5d7d328e22876348551976acd80501a3964dfaaeb12007e57c9af0da70ab25d0b475b8808e265e674bc44fb3225a378aa23a11b612224c404a
data/TODO CHANGED
@@ -4,3 +4,4 @@
4
4
  -D, --dump-header FILE Write the headers to FILE
5
5
  -H, --header LINE Pass custom header LINE to server (H)
6
6
  -x, --proxy [PROTOCOL://]HOST[:PORT] Use proxy on given port
7
+ -:, --next Allows the following URL to use a separate set of options
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.7.0
data/bin/faraday-cli CHANGED
@@ -3,100 +3,10 @@ if ENV['FARADAY_CLI_DEVELOPER_ENV'] == 'true'
3
3
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
4
  end
5
5
 
6
- require 'optparse'
7
6
  require 'faraday/cli'
8
7
 
9
- CLI_OPTIONS = {}
10
- CLI_OPTIONS[:flags]= []
11
- OptionParser.new do |o|
12
-
13
- o.banner.concat(' <url>')
14
-
15
- o.on('-V', '--version', 'Show version number and quit') { $stdout.puts(Faraday::CLI::VERSION); exit }
16
-
17
- CLI_OPTIONS[:http_method]= 'get'
18
- o.on('-X', '--request COMMAND', 'Specify http request command to use') do |http_method|
19
- CLI_OPTIONS[:http_method]= http_method.to_s.strip.downcase
20
- end
21
-
22
- CLI_OPTIONS[:http_headers]= []
23
- o.on('-H', '--header HEADER:VALUE', 'Pass custom header LINE to server (H)') do |header|
24
- CLI_OPTIONS[:http_headers].push(header.split(':'))
25
- end
26
-
27
- CLI_OPTIONS[:params]= []
28
- o.on('-q', '--query key=value', 'Pass Query key values to use in the request') do |raw_query_pair|
29
- CLI_OPTIONS[:params].push(raw_query_pair.split('='))
30
- end
31
-
32
- o.on('-d', '--data PAYLOAD_STRING', 'HTTP POST data (H)') { |payload| CLI_OPTIONS[:body]= payload }
33
-
34
- o.on('--upload_file KEY=FILE_PATH[:CONTENT_TYPE]', 'Pass File upload io in the request pointing to the given file') do |payload_file_path|
35
-
36
- CLI_OPTIONS[:flags] << :multipart
37
-
38
- parts = payload_file_path.split('=')
39
- raw_file_path = parts.pop
40
- key = parts.first
41
-
42
- file_path, content_type = raw_file_path.split(':')
43
- content_type ||= 'application/octet-stream'
44
-
45
- file_stream_io = Faraday::UploadIO.new(File.realpath(file_path), content_type)
46
-
47
- CLI_OPTIONS[:body] = {key => file_stream_io}
48
-
49
- end
50
-
51
- o.on('-A', '--user-agent STRING', 'Send User-Agent STRING to server (H)') do |user_agent|
52
- CLI_OPTIONS[:http_headers] << ['User-Agent', user_agent]
53
- end
54
-
55
- o.on('-o', '--output FILE_PATH', 'Write to FILE instead of stdout') do |out_file_path|
56
- $stdout.reopen(out_file_path, 'a+')
57
- $stderr.reopen(out_file_path, 'a+')
58
- end
59
-
60
- # o.on('-x', '--proxy HOST:PORT', 'HOST[:PORT] Use proxy on given port') do |host_port_str|
61
- # host, port = host_port_str.split(':')
62
- # port = '80' if port.nil?
63
- #
64
- # CLI_OPTIONS[:proxy]= {host: host, port: port}
65
- # end
66
-
67
- o.on('-v', '--verbose', 'Make the operation more talkative') do
68
- CLI_OPTIONS[:flags] << :verbose
69
- end
70
-
71
- o.on('-s', '--silent', "Silent mode (don't output anything)") do
72
- CLI_OPTIONS[:flags] << :silent
73
- $stdout.reopen('/dev/null', 'a+')
74
- $stderr.reopen('/dev/null', 'a+')
75
-
76
- end
77
-
78
- CLI_OPTIONS[:config_file_paths]= []
79
- o.on('-K', '--config FILE_PATH', 'File path to the .faraday.rb if you want use other than default') do |file_path|
80
- CLI_OPTIONS[:config_file_paths] << File.absolute_path(file_path)
81
- end
82
-
83
- o.on('-M', '--middlewares', 'Show current middleware stack') do
84
- CLI_OPTIONS[:flags] << :show_middlewares
85
- end
86
-
87
- o.on('-W', '--without_middlewares', 'Make request without consuming middleware file(s)') do
88
- CLI_OPTIONS[:flags] << :without_middlewares
89
- end
90
-
91
- # Z
92
-
93
- o.parse!
94
-
95
- end
96
-
97
- ALLOWED_HTTP_METHODS = %w(get head post put patch delete options)
98
- raise('invalid http method given') unless ALLOWED_HTTP_METHODS.include?(CLI_OPTIONS[:http_method])
99
- is_verbose = !CLI_OPTIONS[:flags].include?(:silent) && CLI_OPTIONS[:flags].include?(:verbose)
8
+ CLI_OPTIONS = Faraday::CLI::Option::Parser.new.parse!
9
+ Faraday::CLI::Option::Validator.validate(CLI_OPTIONS)
100
10
 
101
11
  connection = Faraday.new do |builder|
102
12
  builder.use Faraday::Response::RaiseError
@@ -107,12 +17,16 @@ connection = Faraday.new do |builder|
107
17
 
108
18
  builder.request(:multipart) if CLI_OPTIONS[:flags].include?(:multipart)
109
19
 
110
- if is_verbose
111
- builder.use Faraday::CLI::Middleware::VerboseRequest
20
+ if CLI_OPTIONS[:flags].include?(:verbose)
112
21
  builder.response :logger
113
22
  end
114
23
 
115
- builder.adapter(:net_http)
24
+ if CLI_OPTIONS[:flags].include?(:super_verbose)
25
+ builder.use Faraday::CLI::Middleware::VerboseRequest
26
+ builder.use Faraday::CLI::Middleware::VerboseResponse
27
+ end
28
+
29
+ builder.adapter(Faraday.default_adapter)
116
30
  end
117
31
 
118
32
  if CLI_OPTIONS[:flags].include?(:show_middlewares)
@@ -121,6 +35,7 @@ if CLI_OPTIONS[:flags].include?(:show_middlewares)
121
35
  end
122
36
 
123
37
  FARADAY_ACTIVE_CONNECTION= connection
38
+
124
39
  def active_connection
125
40
  FARADAY_ACTIVE_CONNECTION
126
41
  end
@@ -144,10 +59,11 @@ begin
144
59
 
145
60
  end
146
61
 
147
- $stdout.puts(Faraday::CLI::ResponseFormatter.format(response, *CLI_OPTIONS[:flags]))
62
+ $stdout.puts(response.body)
148
63
 
149
- rescue Faraday::Error => ex
64
+ rescue Faraday::ClientError => ex
150
65
  $stdout.puts(ex.message)
66
+ $stdout.puts(ex.response[:body]) unless ex.response.nil?
151
67
  exit(1)
152
68
 
153
69
  rescue URI::InvalidURIError => ex
@@ -2,7 +2,7 @@ require 'yaml'
2
2
  class Faraday::CLI::Middleware::VerboseRequest < Faraday::Middleware
3
3
 
4
4
  def call(request_env)
5
- $stdout.puts(YAML.dump(request_env),"\n")
5
+ $stdout.puts(YAML.dump({'request' => request_env}),"\n")
6
6
 
7
7
  @app.call(request_env)
8
8
  end
@@ -0,0 +1,12 @@
1
+ class Faraday::CLI::Middleware::VerboseResponse < Faraday::Middleware
2
+
3
+ def call(request_env)
4
+ @app.call(request_env).on_complete do |src_response_env|
5
+ response_env = src_response_env.dup
6
+ response_env.delete(:body)
7
+
8
+ $stdout.puts(YAML.dump({'response' => response_env}),"\n")
9
+ end
10
+ end
11
+
12
+ end
@@ -1,3 +1,4 @@
1
1
  module Faraday::CLI::Middleware
2
2
  require 'faraday/cli/middleware/verbose_request'
3
+ require 'faraday/cli/middleware/verbose_response'
3
4
  end
@@ -0,0 +1,106 @@
1
+ require 'optparse'
2
+ class Faraday::CLI::Option::Parser
3
+
4
+ def parse!
5
+ options = {}
6
+ merge_defaults(options)
7
+ OptionParser.new do |o|
8
+
9
+ o.banner.concat(' <url>')
10
+
11
+ o.on('-V', '--version', 'Show version number and quit') { $stdout.puts(Faraday::CLI::VERSION); exit }
12
+
13
+ o.on('-X', '--request COMMAND', 'Specify http request command to use') do |http_method|
14
+ options[:http_method]= http_method.to_s.strip.downcase
15
+ end
16
+
17
+ o.on('-H', '--header HEADER:VALUE', 'Pass custom header LINE to server (H)') do |header|
18
+ options[:http_headers].push(header.split(':'))
19
+ end
20
+
21
+ o.on('-q', '--query key=value', 'Pass Query key values to use in the request') do |raw_query_pair|
22
+ options[:params].push(raw_query_pair.split('='))
23
+ end
24
+
25
+ o.on('-d', '--data PAYLOAD_STRING', 'HTTP POST data (H)') { |payload| options[:body]= payload }
26
+
27
+ o.on('--upload_file KEY=FILE_PATH[:CONTENT_TYPE]', 'Pass File upload io in the request pointing to the given file') do |payload_file_path|
28
+
29
+ options[:flags] << :multipart
30
+
31
+ parts = payload_file_path.split('=')
32
+ raw_file_path = parts.pop
33
+ key = parts.first
34
+
35
+ file_path, content_type = raw_file_path.split(':')
36
+ content_type ||= 'application/octet-stream'
37
+
38
+ file_stream_io = Faraday::UploadIO.new(File.realpath(file_path), content_type)
39
+
40
+ options[:body] = {key => file_stream_io}
41
+
42
+ end
43
+
44
+ o.on('-A', '--user-agent STRING', 'Send User-Agent STRING to server (H)') do |user_agent|
45
+ options[:http_headers] << ['User-Agent', user_agent]
46
+ end
47
+
48
+ o.on('-o', '--output FILE_PATH', 'Write to FILE instead of stdout') do |out_file_path|
49
+ $stdout.reopen(out_file_path, 'a+')
50
+ $stderr.reopen(out_file_path, 'a+')
51
+ end
52
+
53
+ # o.on('-x', '--proxy HOST:PORT', 'HOST[:PORT] Use proxy on given port') do |host_port_str|
54
+ # host, port = host_port_str.split(':')
55
+ # port = '80' if port.nil?
56
+ #
57
+ # options[:proxy]= {host: host, port: port}
58
+ # end
59
+
60
+ o.on('-v', '--verbose', 'Make the operation more talkative') do
61
+ options[:flags] << :verbose
62
+ end
63
+
64
+ o.on('--super-verbose', 'Make the operation even more talkative') do
65
+ options[:flags] << :super_verbose
66
+ end
67
+
68
+ o.on('-s', '--silent', "Silent mode (don't output anything)") do
69
+ options[:flags] << :silent
70
+ $stdout.reopen('/dev/null', 'a+')
71
+ $stderr.reopen('/dev/null', 'a+')
72
+
73
+ end
74
+
75
+ options[:config_file_paths]= []
76
+ o.on('-K', '--config FILE_PATH', 'File path to the .faraday.rb if you want use other than default') do |file_path|
77
+ options[:config_file_paths] << File.absolute_path(file_path)
78
+ end
79
+
80
+ o.on('-M', '--middlewares', 'Show current middleware stack') do
81
+ options[:flags] << :show_middlewares
82
+ end
83
+
84
+ o.on('-W', '--without_middlewares', 'Make request without consuming middleware file(s)') do
85
+ options[:flags] << :without_middlewares
86
+ end
87
+
88
+ # Z
89
+
90
+ o.parse!
91
+
92
+ end
93
+
94
+ options
95
+ end
96
+
97
+ protected
98
+
99
+ def merge_defaults(options_hash)
100
+ options_hash[:flags]= []
101
+ options_hash[:params]= []
102
+ options_hash[:http_method]= 'get'
103
+ options_hash[:http_headers]= []
104
+ end
105
+
106
+ end
@@ -0,0 +1,19 @@
1
+ module Faraday::CLI::Option::Validator
2
+ extend self
3
+
4
+ ALLOWED_HTTP_METHODS = %w(get head post put patch delete options)
5
+
6
+ def validate(options_hash)
7
+ validate_http_method(options_hash)
8
+ end
9
+
10
+ protected
11
+
12
+ def validate_http_method(options_hash)
13
+ unless ALLOWED_HTTP_METHODS.include?(options_hash[:http_method])
14
+ $stderr.puts("invalid http method given: #{options_hash[:http_method].inspect}")
15
+ exit(1)
16
+ end
17
+ end
18
+
19
+ end
@@ -0,0 +1,4 @@
1
+ module Faraday::CLI::Option
2
+ require 'faraday/cli/option/parser'
3
+ require 'faraday/cli/option/validator'
4
+ end
data/lib/faraday/cli.rb CHANGED
@@ -2,9 +2,10 @@ require 'faraday'
2
2
  module Faraday::CLI
3
3
 
4
4
  require 'faraday/cli/version'
5
+
5
6
  require 'faraday/cli/client'
7
+ require 'faraday/cli/option'
6
8
  require 'faraday/cli/middleware'
7
- require 'faraday/cli/response_formatter'
8
9
  require 'faraday/cli/middleware_fetcher'
9
10
 
10
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Luzsi
@@ -120,9 +120,12 @@ files:
120
120
  - lib/faraday/cli/client.rb
121
121
  - lib/faraday/cli/middleware.rb
122
122
  - lib/faraday/cli/middleware/verbose_request.rb
123
+ - lib/faraday/cli/middleware/verbose_response.rb
123
124
  - lib/faraday/cli/middleware_fetcher.rb
124
125
  - lib/faraday/cli/middleware_fetcher/container.rb
125
- - lib/faraday/cli/response_formatter.rb
126
+ - lib/faraday/cli/option.rb
127
+ - lib/faraday/cli/option/parser.rb
128
+ - lib/faraday/cli/option/validator.rb
126
129
  - lib/faraday/cli/version.rb
127
130
  - prototype/.faraday.rb
128
131
  - prototype/config.ru
@@ -1,24 +0,0 @@
1
- require 'yaml'
2
- module Faraday::CLI::ResponseFormatter
3
- extend self
4
-
5
- def format(faraday_response,*flags)
6
- formatted_message_parts = []
7
- formatted_message_parts << YAML.dump(response_hash_by(faraday_response)) if flags.include?(:verbose)
8
- formatted_message_parts << faraday_response.body
9
-
10
- formatted_message_parts.join("\n")
11
- end
12
-
13
- protected
14
-
15
- def response_hash_by(faraday_response)
16
- {
17
- 'response' => {
18
- 'status' => faraday_response.status,
19
- 'headers' => Hash[faraday_response.headers]
20
- }
21
- }
22
- end
23
-
24
- end