Skip to content

Commit 041622a

Browse files
authored
Add Customers API (#6)
1 parent 9a6f7b0 commit 041622a

File tree

5 files changed

+94
-1
lines changed

5 files changed

+94
-1
lines changed

README.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,19 @@ client.runsheets.drivers_tasks(driver_id: driver_id, date: "2021-10-14")
126126
client.runsheets.drivers_tasks(driver_id: driver_id, date: "2021-10-14", state: "successful")
127127
```
128128

129+
### Customers
130+
131+
```ruby
132+
# list customers
133+
client.customers.list
134+
# get a customer details
135+
client.customers.retrieve(customer_id: customer_id)
136+
# create customer
137+
client.customers.create(customer: {name: "John Doe", email: "well@example.com"})
138+
# update customer
139+
client.customers.update(customer_id: customer_id, customer: {name: "Bourne"})
140+
```
141+
129142
## TO DO
130143

131144
- [x] Add API Documentation ([#2](https://github.com/maful/versafleet-ruby/pull/2))
@@ -137,7 +150,7 @@ client.runsheets.drivers_tasks(driver_id: driver_id, date: "2021-10-14", state:
137150
- [x] Add Runsheets API ([#5](https://github.com/maful/versafleet-ruby/pull/5))
138151
- [x] Add Drivers API ([#1](https://github.com/maful/versafleet-ruby/pull/1))
139152
- [x] Add Vehicles API ([#4](https://github.com/maful/versafleet-ruby/pull/4))
140-
- [ ] Add Customers API
153+
- [x] Add Customers API ([#6](https://github.com/maful/versafleet-ruby/pull/6))
141154
- [ ] Add Account API
142155

143156
## 🙏 Contributing

lib/versafleet.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ module Versafleet
1515
autoload :DriversResource, "versafleet/resources/drivers"
1616
autoload :VehiclesResource, "versafleet/resources/vehicles"
1717
autoload :RunsheetsResource, "versafleet/resources/runsheets"
18+
autoload :CustomersResource, "versafleet/resources/customers"
1819

1920
# Classes used to return a nicer object wrapping the response data
2021
autoload :Job, "versafleet/objects/job"
2122
autoload :Task, "versafleet/objects/task"
2223
autoload :Driver, "versafleet/objects/driver"
2324
autoload :Vehicle, "versafleet/objects/vehicle"
2425
autoload :Runsheet, "versafleet/objects/runsheet"
26+
autoload :Customer, "versafleet/objects/customer"
2527
end

lib/versafleet/client.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ def runsheets
6666
RunsheetsResource.new(self)
6767
end
6868

69+
# Customers Resource instance
70+
#
71+
# @return [CustomersResource]
72+
def customers
73+
CustomersResource.new(self)
74+
end
75+
6976
# Initializes a new Faraday connection
7077
#
7178
# @return [Faraday::Connection]

lib/versafleet/objects/customer.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module Versafleet
2+
class Customer < Object
3+
end
4+
end

lib/versafleet/resources/customers.rb

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
module Versafleet
2+
class CustomersResource < Resource
3+
# List All Customers
4+
#
5+
# == Examples:
6+
#
7+
# client.customers.list
8+
# # set per page to 20
9+
# client.customers.list(per_page: 20)
10+
# # move to page 2
11+
# client.customers.list(page: 2, per_page: 20)
12+
#
13+
# {https://versafleet.docs.apiary.io/#reference/0/customer-api/list-all-customers VersaFleet API}
14+
#
15+
# @param params [Hash] the filter query
16+
# @return [Collection]
17+
def list(**params)
18+
response = get_request("customers", params: params)
19+
Collection.from_response(response, key: "customers", type: Customer)
20+
end
21+
22+
# Get Customer details
23+
#
24+
# == Example:
25+
#
26+
# client.customers.retrieve(customer_id: 123)
27+
#
28+
# {https://versafleet.docs.apiary.io/#reference/0/customer-api/show-a-customer-detail VersaFleet API}
29+
#
30+
# @param customer_id [Integer|String] Customer ID or Customer GUID
31+
# @return [Customer]
32+
def retrieve(customer_id:)
33+
Customer.new get_request("customers/#{customer_id}").body.dig("customer")
34+
end
35+
36+
# Create a Customer
37+
#
38+
# == Example:
39+
#
40+
# client.customers.create(customer: {name: "John Doe", email: "well@example.com"})
41+
#
42+
# {https://versafleet.docs.apiary.io/#reference/0/customer-api/create-a-customer-detail VersaFleet API}
43+
#
44+
# @param customer [Hash] Customer request payload
45+
# @return [Customer]
46+
def create(customer:)
47+
payload = {customer: customer}
48+
Customer.new post_request("customers", body: payload).body.dig("customer")
49+
end
50+
51+
# Update Customer
52+
#
53+
# == Example:
54+
#
55+
# client.customers.update(customer_id: 123, customer: {name: "Bourne"})
56+
#
57+
# {https://versafleet.docs.apiary.io/#reference/0/customer-api/update-a-customer-detail VersaFleet API}
58+
#
59+
# @param customer_id [Integer|String] Customer ID or Customer GUID
60+
# @param customer [Hash] Customer request payload
61+
# @return [Customer]
62+
def update(customer_id:, customer:)
63+
payload = {customer: customer}
64+
Customer.new put_request("customers/#{customer_id}", body: payload).body.dig("customer")
65+
end
66+
end
67+
end

0 commit comments

Comments
 (0)