From eb3dfc360eeab798aed9eb69ae1d1dbf6f139e7b Mon Sep 17 00:00:00 2001 From: Emeric Henon Date: Mon, 29 Aug 2016 13:29:03 +0200 Subject: [PATCH 1/3] Raise clearer errors in case of failed requests --- lib/uber/api_request.rb | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/uber/api_request.rb b/lib/uber/api_request.rb index 6977b5e..647024f 100644 --- a/lib/uber/api_request.rb +++ b/lib/uber/api_request.rb @@ -17,21 +17,32 @@ def initialize(client, request_method, path, options = {}) # @return [Hash] def perform - @client.send(@request_method, @path, @options).body + @client.send(@request_method, @path, @options) end # @param klass [Class] # @param request [Uber::ApiRequest] # @return [Object] def perform_with_object(klass) - klass.new(perform) + result = perform + if result.status == 200 + klass.new(result.body) + else + raise Uber::Error::UnprocessableEntity.new(result.body) + end end # @param klass [Class] # @return [Array] def perform_with_objects(klass) - perform.values.flatten.collect do |element| - klass.new(element) + result = perform + + if result.status == 200 + result.body.values.flatten.collect do |element| + klass.new(element) + end + else + raise Uber::Error::UnprocessableEntity.new(result.body.values.flatten.last) end end end From 1bfbdf68ef7d188e9bd4580e7d1ae31ea690a87a Mon Sep 17 00:00:00 2001 From: Emeric Henon Date: Tue, 30 Aug 2016 12:11:47 +0200 Subject: [PATCH 2/3] Success Correction --- lib/uber/api_request.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/uber/api_request.rb b/lib/uber/api_request.rb index 647024f..164ae21 100644 --- a/lib/uber/api_request.rb +++ b/lib/uber/api_request.rb @@ -25,7 +25,7 @@ def perform # @return [Object] def perform_with_object(klass) result = perform - if result.status == 200 + if result.status == 200 || result.status == 202 || result.status == 204 klass.new(result.body) else raise Uber::Error::UnprocessableEntity.new(result.body) From 44bbe5f4e3b4225bbe45d0e4d06d84fb2d957248 Mon Sep 17 00:00:00 2001 From: Emeric Henon Date: Wed, 31 Aug 2016 16:37:47 +0200 Subject: [PATCH 3/3] Handles more error statuses --- lib/uber/api_request.rb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/uber/api_request.rb b/lib/uber/api_request.rb index 164ae21..c63160a 100644 --- a/lib/uber/api_request.rb +++ b/lib/uber/api_request.rb @@ -25,10 +25,11 @@ def perform # @return [Object] def perform_with_object(klass) result = perform - if result.status == 200 || result.status == 202 || result.status == 204 - klass.new(result.body) + # https://developer.uber.com/docs/rides/api/v1-requests#http-error-codes + if [400, 403, 404, 409, 422, 500].include?(result.status) + raise Uber::Error::BadRequest.new(result.body) else - raise Uber::Error::UnprocessableEntity.new(result.body) + klass.new(result.body) end end @@ -37,12 +38,12 @@ def perform_with_object(klass) def perform_with_objects(klass) result = perform - if result.status == 200 + if [400, 403, 404, 409, 422, 500].include?(result.status) + raise Uber::Error::BadRequest.new(result.body.values.flatten.last) + else result.body.values.flatten.collect do |element| klass.new(element) end - else - raise Uber::Error::UnprocessableEntity.new(result.body.values.flatten.last) end end end