From 163c7bb135206aef73fde234b89f046ba8015707 Mon Sep 17 00:00:00 2001 From: Kevin VanGelder Date: Mon, 24 Sep 2012 10:20:25 -0700 Subject: [PATCH] reworked error handling again --- lib/parse_resource/base.rb | 29 ++++++++++++----------------- lib/parse_resource/parse_error.rb | 1 + 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/lib/parse_resource/base.rb b/lib/parse_resource/base.rb index 78fb33a..fd894b3 100644 --- a/lib/parse_resource/base.rb +++ b/lib/parse_resource/base.rb @@ -369,19 +369,18 @@ def create attrs = @unsaved_attributes.to_json result = self.resource.post(attrs, opts) do |resp, req, res, &block| - case resp.code - when 200 + if resp.code + error_response = JSON.parse(resp) rescue {"code" => 0, "error" => "unknown error"} + pe = ParseError.new(error_response["code"]).to_array + self.errors.add(pe[0], pe[1]) + return false + else @attributes.merge!(JSON.parse(resp)) @attributes.merge!(@unsaved_attributes) attributes = HashWithIndifferentAccess.new(attributes) @unsaved_attributes = {} create_setters_and_getters! return true - else - error_response = JSON.parse(resp) rescue {"code" => 0, "error" => "unknown error"} - pe = ParseError.new(error_response["code"]).to_array - self.errors.add(pe[0], pe[1]) - return false end end end @@ -415,21 +414,17 @@ def update(attributes = {}) opts = {:content_type => "application/json"} result = self.instance_resource.put(put_attrs, opts) do |resp, req, res, &block| - case resp.code - when 200 - + if resp.code + error_response = JSON.parse(resp) rescue {"code" => 0, "error" => "unknown error"} + pe = ParseError.new(error_response["code"], error_response["error"]).to_array + self.errors.add(pe[0], pe[1]) + return false + else @attributes.merge!(JSON.parse(resp)) @attributes.merge!(@unsaved_attributes) @unsaved_attributes = {} create_setters_and_getters! - return true - else - error_response = JSON.parse(resp) rescue {"code" => 0, "error" => "unknown error"} - pe = ParseError.new(error_response["code"], error_response["error"]).to_array - self.errors.add(pe[0], pe[1]) - - return false end end end diff --git a/lib/parse_resource/parse_error.rb b/lib/parse_resource/parse_error.rb index 100d51e..3b11465 100644 --- a/lib/parse_resource/parse_error.rb +++ b/lib/parse_resource/parse_error.rb @@ -22,6 +22,7 @@ def initialize(code, msg="") when 205 @error = [:user, "with specified email not found"] else + @error = "Unknown Error" raise "Parse error #{code}: #{@error}" end end