Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,6 @@ Metrics/CyclomaticComplexity:

Metrics/MethodLength:
Enabled: false

Metrics/ClassLength:
Max: 200
1 change: 1 addition & 0 deletions lib/ruber.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
require "ruber/authenticator"
require "ruber/request"
require "ruber/resources/delivery_resource"
require "ruber/error"

# a Ruby wrapper for Uber API
module Ruber
Expand Down
12 changes: 11 additions & 1 deletion lib/ruber/error.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# frozen_string_literal: true

module Ruber
class Error < StandardError; end
class Error < StandardError
attr_reader :status, :message, :metadata

def initialize(msg, body, status)
@message = body[:message]
@metadata = body[:metadata]
@status = status

super(msg)
end
end
end
1 change: 1 addition & 0 deletions lib/ruber/objects/delivery.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@

module Ruber
class Delivery < Object
class ProofOfDelivery < Object; end
end
end
6 changes: 6 additions & 0 deletions lib/ruber/objects/proof_of_delivery.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# frozen_string_literal: true

module Ruber
class ProofOfDelivery < Object
end
end
22 changes: 3 additions & 19 deletions lib/ruber/request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def get
handle_response connection.get(@url)
end

def post(body:, headers: {})
def post(body: {}, headers: {})
handle_response connection.post(@url, body, headers)
end

Expand Down Expand Up @@ -44,25 +44,9 @@ def connection
end

def handle_response(response)
case response.status
when 400
raise Error, "Your request was malformed. #{response.body["error"]}"
when 401
raise Error, "You did not supply valid authentication credentials. #{response.body["error"]}"
when 403
raise Error, "You are not allowed to perform that action. #{response.body["error"]}"
when 404
raise Error, "No results were found for your request. #{response.body["error"]}"
when 429
raise Error, "Your request exceeded the API rate limit. #{response.body["error"]}"
when 500
raise Error, "We were unable to perform the request due to server-side problems. #{response.body["error"]}"
when 503
raise Error,
"You have been rate limited for sending more than 20 requests per second. #{response.body["error"]}"
end
return response if response.status == 200

response
raise Ruber::Error.new(response.body[:message], response.body, response.status)
end
end
end
24 changes: 24 additions & 0 deletions lib/ruber/resources/delivery_resource.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,30 @@ def find(id)

Delivery.new response.body
end

def create(params)
response = Request.new("customers/#{Ruber.customer_id}/deliveries").post(body: params)

Delivery.new response.body
end

def cancel(id)
response = Request.new("customers/#{Ruber.customer_id}/deliveries/#{id}/cancel").post

Delivery.new response.body
end

def update(id, params)
response = Request.new("customers/#{Ruber.customer_id}/deliveries/#{id}").post(body: params)

Delivery.new response.body
end

def proof_of_delivery(id, params)
response = Request.new("customers/#{Ruber.customer_id}/deliveries/#{id}/proof_of_delivery").post(body: params)

Delivery::ProofOfDelivery.new response.body
end
end
end
end
Loading