lib/chargify/customer.rb in jsmestad-chargify-0.3.0.pre5 vs lib/chargify/customer.rb in jsmestad-chargify-0.3.0.pre6

- old
+ new

@@ -7,59 +7,81 @@ def all(options={}) customers = api_request(:get, '/customers.json', :query => options) customers.map{|c| Hashie::Mash.new c['customer']} end - def find(id) + def find!(id) return all if id == :all request = api_request(:get, "/customers/#{id}.json") - success = request.code == 200 - response = Hashie::Mash.new(request).customer if success - Hashie::Mash.new(response || {}).update(:success? => success) + response = Hashie::Mash.new(request) + response end + + def find(id) + find!(id) + rescue Chargify::Error::Base => e + return nil + end # def find!(id) # request = api_request(:get, "/customers/#{id}.json", :raise_errors => true) # response = Hashie::Mash.new(request).customer # end - def lookup(reference_id) + def lookup!(reference_id) request = api_request(:get, "/customers/lookup.json?reference=#{reference_id}") - success = request.code == 200 - response = Hashie::Mash.new(request).customer if success - Hashie::Mash.new(response || {}).update(:success? => success) + response = Hashie::Mash.new(request) + response.customer end + + def lookup(reference_id) + lookup!(reference_id) + rescue Chargify::Error::Base => e + return nil + end # # * first_name (Required) # * last_name (Required) # * email (Required) # * organization (Optional) Company/Organization name # * reference (Optional, but encouraged) The unique identifier used within your own application for this customer # - def create(info={}) + def create!(info={}) result = api_request(:post, "/customers.json", :body => {:customer => info}) created = true if result.code == 201 response = Hashie::Mash.new(result) (response.customer || response).update(:success? => created) end + + def create(info={}) + create!(info) + rescue Chargify::Error::Base => e + return false + end # # * first_name (Required) # * last_name (Required) # * email (Required) # * organization (Optional) Company/Organization name # * reference (Optional, but encouraged) The unique identifier used within your own application for this customer # - def update(info={}) + def update!(info={}) info.stringify_keys! chargify_id = info.delete('id') result = api_request(:put, "/customers/#{chargify_id}.json", :body => {:customer => info}) response = Hashie::Mash.new(result) return response.customer unless response.customer.to_a.empty? response + end + + def update(info={}) + update!(info) + rescue Chargify::Error::Base => e + return false end def subscriptions(id) subscriptions = api_request(:get, "/customers/#{id}/subscriptions.json") subscriptions.map{|s| Hashie::Mash.new s['subscription']}