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
2 changes: 2 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
AllCops:
SuggestExtensions: false
NewCops: disable
TargetRubyVersion: 3.0

Style/StringLiterals:
Expand Down
4 changes: 3 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ gemspec

gem "rake", "~> 13.0"

gem "minitest", "~> 5.16"
gem "pry-byebug", "~> 3.9"

gem "rubocop", "~> 1.21"

Expand All @@ -16,5 +16,7 @@ group :development do
end

group :test do
gem "minitest", "~> 5.16"
gem "minitest-reporters", "~> 1.7"
gem "webmock"
end
20 changes: 19 additions & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,20 @@ PATH
remote: .
specs:
ruber (0.1.0)
faraday
faraday (>= 1.0, < 3.0)
faraday_middleware

GEM
remote: https://rubygems.org/
specs:
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
ansi (1.5.0)
ast (2.4.2)
bigdecimal (3.1.9)
builder (3.3.0)
byebug (11.1.3)
coderay (1.1.3)
crack (1.0.0)
bigdecimal
rexml
Expand Down Expand Up @@ -44,12 +48,24 @@ GEM
hashdiff (1.1.2)
json (2.9.1)
language_server-protocol (3.17.0.4)
method_source (1.1.0)
minitest (5.25.4)
minitest-reporters (1.7.1)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
multipart-post (2.4.1)
parallel (1.26.3)
parser (3.3.7.0)
ast (~> 2.4.1)
racc
pry (0.14.2)
coderay (~> 1.1)
method_source (~> 1.0)
pry-byebug (3.10.1)
byebug (~> 11.0)
pry (>= 0.13, < 0.15)
public_suffix (6.0.1)
racc (1.8.1)
rainbow (3.1.1)
Expand Down Expand Up @@ -85,6 +101,8 @@ PLATFORMS
DEPENDENCIES
dotenv
minitest (~> 5.16)
minitest-reporters (~> 1.7)
pry-byebug (~> 3.9)
rake (~> 13.0)
ruber!
rubocop (~> 1.21)
Expand Down
6 changes: 6 additions & 0 deletions lib/ruber.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
require "forwardable"
require "ruber/configuration"
require "ruber/authenticator"
require "ruber/request"
require "ruber/resources/delivery_resource"

# a Ruby wrapper for Uber API
module Ruber
Expand All @@ -12,6 +14,10 @@ module Ruber
autoload :Authenticator, "ruber/authenticator"
autoload :Object, "ruber/object"

autoload :DeliveryResource, "ruber/resources/delivery_resource"

autoload :Delivery, "ruber/objects/delivery"

DEFAULT_API_BASE = "https://api.uber.com/v1"

class << self
Expand Down
2 changes: 1 addition & 1 deletion lib/ruber/authenticator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class Authenticator

class << self
def access_token
@access_token = cached_token || fetch_new_token
@access_token = cached_token&.fetch(:token) || fetch_new_token

@access_token = refresh_access_token if token_expired?

Expand Down
27 changes: 0 additions & 27 deletions lib/ruber/client.rb

This file was deleted.

6 changes: 6 additions & 0 deletions lib/ruber/objects/delivery.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# frozen_string_literal: true

module Ruber
class Delivery < Object
end
end
44 changes: 28 additions & 16 deletions lib/ruber/resource.rb → lib/ruber/request.rb
Original file line number Diff line number Diff line change
@@ -1,34 +1,46 @@
# frozen_string_literal: true

require "faraday"
require "faraday_middleware"

module Ruber
# Provides methods to handle all type of CRUD requests
class Resource
attr_reader :client
class Request
BASE_URL = "https://api.uber.com/v1"

def initialize(client)
@client = client
def initialize(url)
@url = url
end

private
def get
handle_response connection.get(@url)
end

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

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

def patch_request(url, body:, headers: {})
handle_response client.connection.patch(url, body, headers)
def put(body:, headers: {})
handle_response connection.put(@url, body, headers)
end

def put_request(url, body:, headers: {})
handle_response client.connection.put(url, body, headers)
def delete(params: {}, headers: {})
handle_response connection.delete(@url, params, headers)
end

def delete_request(url, params: {}, headers: {})
handle_response client.connection.delete(url, params, headers)
private

def connection
@connection ||= Faraday.new do |conn|
conn.url_prefix = BASE_URL
conn.request :authorization, :Bearer, Ruber::Authenticator.access_token
conn.request :json
conn.response :json, content_type: "application/json", parser_options: { symbolize_names: true }
conn.adapter Faraday.default_adapter
end
end

def handle_response(response)
Expand Down
13 changes: 13 additions & 0 deletions lib/ruber/resources/delivery_resource.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# frozen_string_literal: true

module Ruber
class DeliveryResource
class << self
def find(id)
response = Request.new("customers/#{Ruber.customer_id}/deliveries/#{id}").get

Delivery.new response.body
end
end
end
end
2 changes: 1 addition & 1 deletion ruber.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@ Gem::Specification.new do |spec|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]

spec.add_dependency "faraday"
spec.add_dependency "faraday", ">= 1.0", "< 3.0"
spec.add_dependency "faraday_middleware"
end
Loading