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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35ddde324fb63af2273c9141dc2e0eb5e7125aac77ff4445c7bafa7d831a42e6
4
- data.tar.gz: 102437b0f17c395bc7925a3f0f411a6b2ac8f06241564143e8ed01798be94bf4
3
+ metadata.gz: 61b2baeddbc3c2bc46e3b1db2f923466777d6dc4e482535908349405bcfdb266
4
+ data.tar.gz: d142bb0973d0684977dec5ebe9a9d3985d6b4c74504e4cc44af4392a7ce1de1e
5
5
  SHA512:
6
- metadata.gz: 3bafe01ca74150bf2f02e8a6eb0f8f87b79aa28d72e63e5d444ecd92427dfc25688d7755ff3ed91a33cf648981af6ddf95fc115a8da41f0865c9529a0f148845
7
- data.tar.gz: 5fc7fc2ff39a0bcfb76435d027a1ce5b9b132f8debf45db63798f6f0c6e93c8de452caa36c782dcbdf73bf57115fa358b4a60256f88c45d00423f4c93d0fed97
6
+ metadata.gz: eb8e9582b7e37eecda4031ab1a9de3451226c382528aba5d4281ea62a0da4283b76004c3d2994bfe7a888b81fe50b6f506a4ac9b6af8ef02cb0f7e85e2189ab7
7
+ data.tar.gz: faf0192a080f5c3379e36028210c17addaa675a81720b86d8b1fd8e8aeb235730fbc5dfc4c7d9d3055c4f657f9ab6590ef5b8b22360db766340fa3964c0bc4a6
data/Gemfile CHANGED
@@ -1,12 +1,7 @@
1
- # frozen_string_literal: true
2
-
3
1
  source "https://rubygems.org"
4
2
 
5
- # Specify your gem's dependencies in versafleet.gemspec
6
3
  gemspec
7
4
 
8
5
  gem "rake", "~> 13.0"
9
-
10
6
  gem "minitest", "~> 5.0"
11
-
12
7
  gem "standard", "~> 1.3"
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
 
@@ -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 Faraday.default_adapter
84
+ conn.adapter adapter, @stubs
57
85
  end
58
86
  end
59
87
 
@@ -0,0 +1,4 @@
1
+ module Versafleet
2
+ class Customer < Object
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Versafleet
2
+ class Runsheet < Object
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Versafleet
2
+ class Vehicle < Object
3
+ end
4
+ end
@@ -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
- # TODO: Remove Job object return
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Versafleet
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
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.2.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-09-21 00:00:00.000000000 Z
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