versafleet 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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