Sha256: 6a87d0b2084211ce977189800cb688662c5a55fe4d1d07fff598bda1d5458cf4
Contents?: true
Size: 1.76 KB
Versions: 50
Compression:
Stored size: 1.76 KB
Contents
#!/usr/bin/env ruby $:.unshift File.dirname(__FILE__) + "/../lib" require 'rubygems' require 'restclient' require 'yaml' def usage(why = nil) puts "failed for reason: #{why}" if why puts "usage: restclient [get|put|post|delete] url|name [username] [password]" puts " The verb is optional, if you leave it off you'll get an interactive shell." puts " put and post both take the input body on stdin." exit(1) end POSSIBLE_VERBS = ['get', 'put', 'post', 'delete'] if POSSIBLE_VERBS.include? ARGV.first @verb = ARGV.shift else @verb = nil end @url = ARGV.shift || 'http://localhost:4567' config = YAML.load(File.read(ENV['HOME'] + "/.restclient")) rescue {} @url, @username, @password = if c = config[@url] [c['url'], c['username'], c['password']] else [@url, * ARGV] end usage("invalid url '#{@url}") unless @url =~ /^https?/ usage("too few args") unless ARGV.size < 3 def r @r ||= RestClient::Resource.new(@url, @username, @password) end r # force rc to load if @verb begin if %w( put post ).include? @verb puts r.send(@verb, STDIN.read) else puts r.send(@verb) end exit 0 rescue RestClient::Exception => e puts e.response.body if e.respond_to? :response raise end end POSSIBLE_VERBS.each do |m| eval <<-end_eval def #{m}(path, *args, &b) r[path].#{m}(*args, &b) end end_eval end def method_missing(s, * args, & b) if POSSIBLE_VERBS.include? s begin r.send(s, *args, & b) rescue RestClient::RequestFailed => e print STDERR, e.response.body raise e end else super end end require 'irb' require 'irb/completion' if File.exists? ".irbrc" ENV['IRBRC'] = ".irbrc" end if File.exists?(File.expand_path(rcfile = "~/.restclientrc")) load(rcfile) end ARGV.clear IRB.start exit!
Version data entries
50 entries across 47 versions & 8 rubygems