mirror of
https://github.com/jnunemaker/httparty
synced 2023-03-27 23:23:07 -04:00
Fixed support for specifying headers from CLI.
Added support for basic auth from CLI.
This commit is contained in:
parent
8b528632c1
commit
79d9ed6677
2 changed files with 41 additions and 29 deletions
3
History
3
History
|
@ -1,8 +1,9 @@
|
|||
== 0.2.7 2009-01-28
|
||||
* 2 minor fixes, 1 minor enhancement, 2 major enhancements
|
||||
* 2 minor fixes, 2 minor enhancements, 2 major enhancements
|
||||
* fixed undefined method add_node for nil class error that occasionally happened (juliocesar)
|
||||
* Handle nil or unexpected values better when typecasting. (Brian Landau)
|
||||
* More robust handling of mime types (Alex Vollmer)
|
||||
* Fixed support for specifying headers and added support for basic auth to CLI. (Alex Vollmer)
|
||||
* Added first class response object that includes original body and status code (Alex Vollmer)
|
||||
* Now parsing all response types as some non-200 responses provide important information, this means no more exception raising (Alex Vollmer)
|
||||
|
||||
|
|
67
bin/httparty
67
bin/httparty
|
@ -10,26 +10,30 @@ require "httparty"
|
|||
opts = {
|
||||
:action => :get,
|
||||
:headers => {},
|
||||
:keep_body => true,
|
||||
:verbose => false,
|
||||
:pretty_print => false
|
||||
:verbose => false
|
||||
}
|
||||
|
||||
def die(msg)
|
||||
STDERR.puts(msg)
|
||||
exit 1
|
||||
end
|
||||
|
||||
OptionParser.new do |o|
|
||||
o.banner = "USAGE: #{$0} [options] [url]"
|
||||
|
||||
o.on("-f",
|
||||
"--format [FORMAT]",
|
||||
"Body format: plain, json or xml") do |f|
|
||||
opts[:format] = f.downcase.to_sym
|
||||
end
|
||||
o.on("-r", "--ruby", "Dump output in Ruby pretty-print format") do |r|
|
||||
opts[:pretty_print] = true
|
||||
"Output format to use instead of pretty-print ruby: " +
|
||||
"plain, json or xml") do |f|
|
||||
opts[:output_format] = f.downcase.to_sym
|
||||
end
|
||||
|
||||
o.on("-a",
|
||||
"--action [ACTION]",
|
||||
"HTTP action: get (default), post, put or delete") do |a|
|
||||
opts[:action] = a.downcase.to_sym
|
||||
end
|
||||
|
||||
o.on("-d",
|
||||
"--data [BODY]",
|
||||
"Data to put in request body (prefix with '@' for file)") do |d|
|
||||
|
@ -39,13 +43,23 @@ OptionParser.new do |o|
|
|||
opts[:data] = d
|
||||
end
|
||||
end
|
||||
|
||||
o.on("-H", "--header [NAME=VALUE]", "Additional HTTP headers in NAME=VALUE form") do |h|
|
||||
name, value = h.split('=')
|
||||
opts[:headers][name] = value
|
||||
die "Invalid header specification, should be Name:Value" unless h =~ /.+:.+/
|
||||
name, value = h.split(':')
|
||||
opts[:headers][name.strip] = value.strip
|
||||
end
|
||||
|
||||
o.on("-v", "--verbose", "If set, print verbose output") do |v|
|
||||
opts[:verbose] = true
|
||||
end
|
||||
|
||||
o.on("-u", "--user [CREDS]", "Use basic authentication. Value should be user:password") do |u|
|
||||
die "Invalid credentials format. Must be user:password" unless u =~ /.+:.+/
|
||||
user, password = u.split(':')
|
||||
opts[:basic_auth] = { :username => user, :password => password }
|
||||
end
|
||||
|
||||
o.on("-h", "--help", "Show help documentation") do |h|
|
||||
puts o
|
||||
exit
|
||||
|
@ -76,28 +90,25 @@ module REXML
|
|||
REXML::Formatters::Default.new( ie_hack )
|
||||
end
|
||||
formatter.write( self, output )
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if opts[:pretty_print] || opts[:format].nil?
|
||||
pp HTTParty.send(opts[:action], ARGV.first, opts)
|
||||
else
|
||||
print_format = opts[:format]
|
||||
opts.merge!(:format => :plain) if opts[:format]
|
||||
if opts[:output_format].nil?
|
||||
response = HTTParty.send(opts[:action], ARGV.first, opts)
|
||||
|
||||
if print_format.nil?
|
||||
pp response
|
||||
puts "Status: #{response.code}"
|
||||
pp response
|
||||
else
|
||||
print_format = opts[:output_format]
|
||||
response = HTTParty.send(opts[:action], ARGV.first, opts)
|
||||
puts "Status: #{response.code}"
|
||||
case opts[:output_format]
|
||||
when :json
|
||||
puts JSON.pretty_generate(response)
|
||||
when :xml
|
||||
REXML::Document.new(response.body).write(STDOUT, 2)
|
||||
puts
|
||||
else
|
||||
case print_format
|
||||
when :json
|
||||
puts JSON.pretty_generate(JSON.parse(response))
|
||||
when :xml
|
||||
REXML::Document.new(response).write(STDOUT, 2)
|
||||
puts
|
||||
else
|
||||
puts response
|
||||
end
|
||||
puts response
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue