lib/grendel/client.rb in grendel-ruby-0.1.1 vs lib/grendel/client.rb in grendel-ruby-0.1.2

- old
+ new

@@ -1,58 +1,65 @@ # Ruby interface to Wesabe's Grendel (http://github.com/wesabe/grendel) module Grendel class Client attr_accessor :debug, :debug_output attr_reader :base_uri - + # Create a new Grendel client instance def initialize(base_uri, options = {}) @base_uri = base_uri @debug = options[:debug] @debug_output = options[:debug_output] || $stderr end - + def get(uri, options = {}) options.merge!(:debug_output => @debug_output) if @debug response = HTTParty.get(@base_uri + uri, options) raise HTTPException.new(response) if response.code >= 400 return response end - + + def head(uri, options = {}) + options.merge!(:debug_output => @debug_output) if @debug + response = HTTParty.head(@base_uri + uri, options) + raise HTTPException.new(response) if response.code >= 400 + return response + end + def post(uri, data = {}, options = {}) - data = data.to_json unless options.delete(:raw_data) + data = data.to_json unless options.delete(:raw_data) options.merge!( :body => data, :headers => {'Content-Type' => 'application/json'} ) options.merge!(:debug_output => @debug_output) if @debug response = HTTParty.post(@base_uri + uri, options) raise HTTPException.new(response) if response.code >= 400 return response end - + def put(uri, data = {}, options = {}) - data = data.to_json unless options.delete(:raw_data) - options = { + data = data.to_json unless options.delete(:raw_data) + options = { :body => data, :headers => {'Content-Type' => 'application/json'} }.update(options) options.merge!(:debug_output => @debug_output) if @debug response = HTTParty.put(@base_uri + uri, options) raise HTTPException.new(response) if response.code >= 400 return response end - + def delete(uri, options = {}) options.merge!(:debug_output => @debug_output) if @debug response = HTTParty.delete(@base_uri + uri, options) raise HTTPException.new(response) if response.code >= 400 end - + def users UserManager.new(self) end - + class HTTPException < Exception def initialize(response) msg = "#{response.code} #{response.message}" msg << "\n#{response.body}" unless response.body.blank? super(msg)