versafleet 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +0 -5
- data/README.md +45 -0
- data/lib/versafleet/client.rb +30 -2
- data/lib/versafleet/objects/customer.rb +4 -0
- data/lib/versafleet/objects/runsheet.rb +4 -0
- data/lib/versafleet/objects/vehicle.rb +4 -0
- data/lib/versafleet/resources/customers.rb +67 -0
- data/lib/versafleet/resources/jobs.rb +1 -2
- data/lib/versafleet/resources/runsheets.rb +22 -0
- data/lib/versafleet/resources/vehicles.rb +67 -0
- data/lib/versafleet/version.rb +1 -1
- data/lib/versafleet.rb +6 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61b2baeddbc3c2bc46e3b1db2f923466777d6dc4e482535908349405bcfdb266
|
4
|
+
data.tar.gz: d142bb0973d0684977dec5ebe9a9d3985d6b4c74504e4cc44af4392a7ce1de1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb8e9582b7e37eecda4031ab1a9de3451226c382528aba5d4281ea62a0da4283b76004c3d2994bfe7a888b81fe50b6f506a4ac9b6af8ef02cb0f7e85e2189ab7
|
7
|
+
data.tar.gz: faf0192a080f5c3379e36028210c17addaa675a81720b86d8b1fd8e8aeb235730fbc5dfc4c7d9d3055c4f657f9ab6590ef5b8b22360db766340fa3964c0bc4a6
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -102,11 +102,56 @@ client.drivers.create(driver: {name: "Yolo", dob: "1990-09-09"})
|
|
102
102
|
client.drivers.update(driver_id: driver_id, driver: {name: "Yolo update"})
|
103
103
|
```
|
104
104
|
|
105
|
+
### Vehicles
|
106
|
+
|
107
|
+
```ruby
|
108
|
+
# list vehicles
|
109
|
+
client.vehicles.list
|
110
|
+
# get a vehicle details
|
111
|
+
client.vehicles.retrieve(vehicle_id: vehicle_id)
|
112
|
+
# create vehicle
|
113
|
+
client.vehicles.create(vehicle: {plate_number: "SK1212", model: "Honda", speed: 50})
|
114
|
+
# update vehicle
|
115
|
+
client.vehicles.update(vehicle_id: vehicle_id, vehicle: {model: "Mercedes", speed: 70})
|
116
|
+
```
|
117
|
+
|
118
|
+
### Runsheets
|
119
|
+
|
120
|
+
```ruby
|
121
|
+
# list runsheets by driver
|
122
|
+
client.runsheets.drivers_tasks(driver_id: driver_id)
|
123
|
+
# filter runsheets by date
|
124
|
+
client.runsheets.drivers_tasks(driver_id: driver_id, date: "2021-10-14")
|
125
|
+
# filter by date and state of the tasks
|
126
|
+
client.runsheets.drivers_tasks(driver_id: driver_id, date: "2021-10-14", state: "successful")
|
127
|
+
```
|
128
|
+
|
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
|
+
|
105
142
|
## TO DO
|
106
143
|
|
107
144
|
- [x] Add API Documentation ([#2](https://github.com/maful/versafleet-ruby/pull/2))
|
108
145
|
- [ ] Add Docker support
|
109
146
|
- [ ] Support to All VersaFleet API endpoints.
|
147
|
+
- [x] Add Jobs V2 API
|
148
|
+
- [x] Add Tasks API
|
149
|
+
- [ ] Non-Authenticated Tracking API
|
150
|
+
- [x] Add Runsheets API ([#5](https://github.com/maful/versafleet-ruby/pull/5))
|
151
|
+
- [x] Add Drivers API ([#1](https://github.com/maful/versafleet-ruby/pull/1))
|
152
|
+
- [x] Add Vehicles API ([#4](https://github.com/maful/versafleet-ruby/pull/4))
|
153
|
+
- [x] Add Customers API ([#6](https://github.com/maful/versafleet-ruby/pull/6))
|
154
|
+
- [ ] Add Account API
|
110
155
|
|
111
156
|
## 🙏 Contributing
|
112
157
|
|
data/lib/versafleet/client.rb
CHANGED
@@ -9,6 +9,9 @@ module Versafleet
|
|
9
9
|
# @return [String] Gets the VersaFleet Secret Key
|
10
10
|
attr_reader :client_secret
|
11
11
|
|
12
|
+
# @return [Symbol] Gets the Symbol key identifying a default Adapter to use
|
13
|
+
attr_reader :adapter
|
14
|
+
|
12
15
|
# Initialize a new VersaFlet client
|
13
16
|
#
|
14
17
|
# == Example:
|
@@ -19,9 +22,13 @@ module Versafleet
|
|
19
22
|
#
|
20
23
|
# @param client_id [String] VersaFleet API Key
|
21
24
|
# @param client_secret [String] VersaFleet Secret Key
|
22
|
-
def initialize(client_id:, client_secret:)
|
25
|
+
def initialize(client_id:, client_secret:, adapter: Faraday.default_adapter, stubs: nil)
|
23
26
|
@client_id = client_id
|
24
27
|
@client_secret = client_secret
|
28
|
+
@adapter = adapter
|
29
|
+
|
30
|
+
# Test stubs for requests
|
31
|
+
@stubs = stubs
|
25
32
|
end
|
26
33
|
|
27
34
|
# Jobs Resource instance
|
@@ -45,6 +52,27 @@ module Versafleet
|
|
45
52
|
DriversResource.new(self)
|
46
53
|
end
|
47
54
|
|
55
|
+
# Vehicles Resource instance
|
56
|
+
#
|
57
|
+
# @return [VehiclesResource]
|
58
|
+
def vehicles
|
59
|
+
VehiclesResource.new(self)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Runsheets Resource instance
|
63
|
+
#
|
64
|
+
# @return [RunsheetsResource]
|
65
|
+
def runsheets
|
66
|
+
RunsheetsResource.new(self)
|
67
|
+
end
|
68
|
+
|
69
|
+
# Customers Resource instance
|
70
|
+
#
|
71
|
+
# @return [CustomersResource]
|
72
|
+
def customers
|
73
|
+
CustomersResource.new(self)
|
74
|
+
end
|
75
|
+
|
48
76
|
# Initializes a new Faraday connection
|
49
77
|
#
|
50
78
|
# @return [Faraday::Connection]
|
@@ -53,7 +81,7 @@ module Versafleet
|
|
53
81
|
conn.url_prefix = BASE_URL
|
54
82
|
conn.request :json
|
55
83
|
conn.response :json, content_type: "application/json"
|
56
|
-
conn.adapter
|
84
|
+
conn.adapter adapter, @stubs
|
57
85
|
end
|
58
86
|
end
|
59
87
|
|
@@ -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
|
@@ -76,8 +76,7 @@ module Versafleet
|
|
76
76
|
#
|
77
77
|
# @param job_id [Integer] Job ID
|
78
78
|
def cancel(job_id:)
|
79
|
-
|
80
|
-
Job.new put_request("v2/jobs/#{job_id}/cancel", body: {}).body
|
79
|
+
put_request("v2/jobs/#{job_id}/cancel", body: {}).body
|
81
80
|
end
|
82
81
|
|
83
82
|
# List Tasks of Job
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Versafleet
|
2
|
+
class RunsheetsResource < Resource
|
3
|
+
# View Driver Info and related Tasks
|
4
|
+
#
|
5
|
+
# == Examples:
|
6
|
+
#
|
7
|
+
# client.runsheets.drivers_tasks(driver_id: 1)
|
8
|
+
# # filter runsheets by date
|
9
|
+
# client.runsheets.drivers_tasks(driver_id: 1, date: "2021-10-14")
|
10
|
+
# # filter by date and state of the tasks
|
11
|
+
# client.runsheets.drivers_tasks(driver_id: 1, date: "2021-10-14", state: "successful")
|
12
|
+
#
|
13
|
+
# {https://versafleet.docs.apiary.io/#reference/0/runsheet-api/view-driver-info-and-related-tasks VersaFleet API}
|
14
|
+
#
|
15
|
+
# @param driver_id [Integer] Driver ID
|
16
|
+
# @param params [Hash] the filter query
|
17
|
+
# @return [Runsheet]
|
18
|
+
def drivers_tasks(driver_id:, **params)
|
19
|
+
Runsheet.new get_request("runsheets/drivers/#{driver_id}", params: params).body.dig("driver")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Versafleet
|
2
|
+
class VehiclesResource < Resource
|
3
|
+
# List All Vehicles
|
4
|
+
#
|
5
|
+
# == Examples:
|
6
|
+
#
|
7
|
+
# client.vehicles.list
|
8
|
+
# # set per page to 20
|
9
|
+
# client.vehicles.list(per_page: 20)
|
10
|
+
# # move to page 2
|
11
|
+
# client.vehicles.list(page: 2, per_page: 20)
|
12
|
+
#
|
13
|
+
# {https://versafleet.docs.apiary.io/#reference/0/vehicles-api/list-all-vehicles VersaFleet API}
|
14
|
+
#
|
15
|
+
# @param params [Hash] the filter query
|
16
|
+
# @return [Collection]
|
17
|
+
def list(**params)
|
18
|
+
response = get_request("vehicles", params: params)
|
19
|
+
Collection.from_response(response, key: "vehicles", type: Vehicle)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Get Vehicle details
|
23
|
+
#
|
24
|
+
# == Examples:
|
25
|
+
#
|
26
|
+
# client.vehicles.retrieve(vehicle_id: 123)
|
27
|
+
#
|
28
|
+
# {https://versafleet.docs.apiary.io/#reference/0/vehicles-api/show-a-vehicle VersaFleet API}
|
29
|
+
#
|
30
|
+
# @param vehicle_id [Integer] Vehicle ID
|
31
|
+
# @return [Vehicle]
|
32
|
+
def retrieve(vehicle_id:)
|
33
|
+
Vehicle.new get_request("vehicles/#{vehicle_id}").body.dig("vehicle")
|
34
|
+
end
|
35
|
+
|
36
|
+
# Create a Vehicle
|
37
|
+
#
|
38
|
+
# == Examples:
|
39
|
+
#
|
40
|
+
# client.vehicles.create(vehicle: {plate_number: "SK1212", model: "Honda", speed: 50})
|
41
|
+
#
|
42
|
+
# {https://versafleet.docs.apiary.io/#reference/0/vehicles-api/create-a-vehicle VersaFleet API}
|
43
|
+
#
|
44
|
+
# @param vehicle [Hash] Vehicle request payload
|
45
|
+
# @return [Vehicle]
|
46
|
+
def create(vehicle:)
|
47
|
+
payload = {vehicle: vehicle}
|
48
|
+
Vehicle.new post_request("vehicles", body: payload).body.dig("vehicle")
|
49
|
+
end
|
50
|
+
|
51
|
+
# Update Vehicle
|
52
|
+
#
|
53
|
+
# == Examples:
|
54
|
+
#
|
55
|
+
# client.vehicles.update(vehicle_id: 123, vehicle: {model: "Mercedes", speed: 70})
|
56
|
+
#
|
57
|
+
# {https://versafleet.docs.apiary.io/#reference/0/vehicles-api/update-a-vehicle VersaFleet API}
|
58
|
+
#
|
59
|
+
# @param vehicle_id [Integer] Vehicle ID
|
60
|
+
# @param vehicle [Hash] Vehicle request payload
|
61
|
+
# @return [Vehicle]
|
62
|
+
def update(vehicle_id:, vehicle:)
|
63
|
+
payload = {vehicle: vehicle}
|
64
|
+
Vehicle.new put_request("vehicles/#{vehicle_id}", body: payload).body.dig("vehicle")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/versafleet/version.rb
CHANGED
data/lib/versafleet.rb
CHANGED
@@ -13,9 +13,15 @@ module Versafleet
|
|
13
13
|
autoload :JobsResource, "versafleet/resources/jobs"
|
14
14
|
autoload :TasksResource, "versafleet/resources/tasks"
|
15
15
|
autoload :DriversResource, "versafleet/resources/drivers"
|
16
|
+
autoload :VehiclesResource, "versafleet/resources/vehicles"
|
17
|
+
autoload :RunsheetsResource, "versafleet/resources/runsheets"
|
18
|
+
autoload :CustomersResource, "versafleet/resources/customers"
|
16
19
|
|
17
20
|
# Classes used to return a nicer object wrapping the response data
|
18
21
|
autoload :Job, "versafleet/objects/job"
|
19
22
|
autoload :Task, "versafleet/objects/task"
|
20
23
|
autoload :Driver, "versafleet/objects/driver"
|
24
|
+
autoload :Vehicle, "versafleet/objects/vehicle"
|
25
|
+
autoload :Runsheet, "versafleet/objects/runsheet"
|
26
|
+
autoload :Customer, "versafleet/objects/customer"
|
21
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: versafleet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maful Prayoga A
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -59,13 +59,19 @@ files:
|
|
59
59
|
- lib/versafleet/collection.rb
|
60
60
|
- lib/versafleet/error.rb
|
61
61
|
- lib/versafleet/object.rb
|
62
|
+
- lib/versafleet/objects/customer.rb
|
62
63
|
- lib/versafleet/objects/driver.rb
|
63
64
|
- lib/versafleet/objects/job.rb
|
65
|
+
- lib/versafleet/objects/runsheet.rb
|
64
66
|
- lib/versafleet/objects/task.rb
|
67
|
+
- lib/versafleet/objects/vehicle.rb
|
65
68
|
- lib/versafleet/resource.rb
|
69
|
+
- lib/versafleet/resources/customers.rb
|
66
70
|
- lib/versafleet/resources/drivers.rb
|
67
71
|
- lib/versafleet/resources/jobs.rb
|
72
|
+
- lib/versafleet/resources/runsheets.rb
|
68
73
|
- lib/versafleet/resources/tasks.rb
|
74
|
+
- lib/versafleet/resources/vehicles.rb
|
69
75
|
- lib/versafleet/version.rb
|
70
76
|
- versafleet.gemspec
|
71
77
|
homepage: https://versafleet.co
|