versafleet 0.1.0 → 0.2.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/README.md +17 -2
- data/lib/versafleet/client.rb +32 -1
- data/lib/versafleet/objects/driver.rb +4 -0
- data/lib/versafleet/resources/drivers.rb +67 -0
- data/lib/versafleet/resources/jobs.rb +69 -0
- data/lib/versafleet/resources/tasks.rb +195 -1
- data/lib/versafleet/version.rb +1 -1
- data/lib/versafleet.rb +2 -0
- metadata +8 -7
- data/.github/workflows/release.yml +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35ddde324fb63af2273c9141dc2e0eb5e7125aac77ff4445c7bafa7d831a42e6
|
4
|
+
data.tar.gz: 102437b0f17c395bc7925a3f0f411a6b2ac8f06241564143e8ed01798be94bf4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bafe01ca74150bf2f02e8a6eb0f8f87b79aa28d72e63e5d444ecd92427dfc25688d7755ff3ed91a33cf648981af6ddf95fc115a8da41f0865c9529a0f148845
|
7
|
+
data.tar.gz: 5fc7fc2ff39a0bcfb76435d027a1ce5b9b132f8debf45db63798f6f0c6e93c8de452caa36c782dcbdf73bf57115fa358b4a60256f88c45d00423f4c93d0fed97
|
data/README.md
CHANGED
@@ -19,6 +19,8 @@ gem "versafleet"
|
|
19
19
|
|
20
20
|
To access the API, you'll need to create a `Versafleet::Client` and pass in your API Key and Secret Key. See [How to obtain API keys](https://versafleet.docs.apiary.io/#introduction/to-obtain-api-keys-(please-keep-them-safe!))
|
21
21
|
|
22
|
+
Need more details? See [VersaFleet API Documentation](https://rubydoc.info/gems/versafleet) to see how it works internally.
|
23
|
+
|
22
24
|
```ruby
|
23
25
|
client = Versafleet::Client.new(client_id: ENV["CLIENT_ID"], client_secret: ENV["CLIENT_SECRET"])
|
24
26
|
```
|
@@ -62,7 +64,7 @@ client.tasks.create(task_attributes: {})
|
|
62
64
|
# assign task to driver
|
63
65
|
client.tasks.assign(task_id: task_id, task: {driver_id: driver_id, vehicle_id: vehicle_id, remarks: "Notes"})
|
64
66
|
# assign multiple tasks to driver
|
65
|
-
client.tasks.assign_multiple(task: {ids: [], driver_id: driver_id, vehicle_id: vehicle_id, remarks: "Notes")
|
67
|
+
client.tasks.assign_multiple(task: {ids: [], driver_id: driver_id, vehicle_id: vehicle_id, remarks: "Notes"})
|
66
68
|
# unassign task
|
67
69
|
client.tasks.unassign(task_id: task_id)
|
68
70
|
# unassign multiple tasks
|
@@ -87,9 +89,22 @@ client.tasks.completion_histories(task_id: task_id)
|
|
87
89
|
client.tasks.base_completion_histories(task_id: task_id)
|
88
90
|
```
|
89
91
|
|
92
|
+
### Drivers
|
93
|
+
|
94
|
+
```ruby
|
95
|
+
# list drivers
|
96
|
+
client.drivers.list
|
97
|
+
# get a driver details
|
98
|
+
client.drivers.retrieve(driver_id: driver_id)
|
99
|
+
# create driver
|
100
|
+
client.drivers.create(driver: {name: "Yolo", dob: "1990-09-09"})
|
101
|
+
# update driver
|
102
|
+
client.drivers.update(driver_id: driver_id, driver: {name: "Yolo update"})
|
103
|
+
```
|
104
|
+
|
90
105
|
## TO DO
|
91
106
|
|
92
|
-
- [
|
107
|
+
- [x] Add API Documentation ([#2](https://github.com/maful/versafleet-ruby/pull/2))
|
93
108
|
- [ ] Add Docker support
|
94
109
|
- [ ] Support to All VersaFleet API endpoints.
|
95
110
|
|
data/lib/versafleet/client.rb
CHANGED
@@ -1,22 +1,53 @@
|
|
1
1
|
module Versafleet
|
2
2
|
class Client
|
3
|
+
# Default API endpoint
|
3
4
|
BASE_URL = "https://api.versafleet.co/api"
|
4
5
|
|
5
|
-
|
6
|
+
# @return [String] Gets the VersaFleet API Key
|
7
|
+
attr_reader :client_id
|
6
8
|
|
9
|
+
# @return [String] Gets the VersaFleet Secret Key
|
10
|
+
attr_reader :client_secret
|
11
|
+
|
12
|
+
# Initialize a new VersaFlet client
|
13
|
+
#
|
14
|
+
# == Example:
|
15
|
+
#
|
16
|
+
# client = Versafleet::Client.new(client_id: ENV["CLIENT_ID"], client_secret: ENV["CLIENT_SECRET"])
|
17
|
+
# # use Jobs resource
|
18
|
+
# client.jobs.list
|
19
|
+
#
|
20
|
+
# @param client_id [String] VersaFleet API Key
|
21
|
+
# @param client_secret [String] VersaFleet Secret Key
|
7
22
|
def initialize(client_id:, client_secret:)
|
8
23
|
@client_id = client_id
|
9
24
|
@client_secret = client_secret
|
10
25
|
end
|
11
26
|
|
27
|
+
# Jobs Resource instance
|
28
|
+
#
|
29
|
+
# @return [JobsResource]
|
12
30
|
def jobs
|
13
31
|
JobsResource.new(self)
|
14
32
|
end
|
15
33
|
|
34
|
+
# Tasks Resource instance
|
35
|
+
#
|
36
|
+
# @return [TasksResource]
|
16
37
|
def tasks
|
17
38
|
TasksResource.new(self)
|
18
39
|
end
|
19
40
|
|
41
|
+
# Drivers Resource instance
|
42
|
+
#
|
43
|
+
# @return [DriversResource]
|
44
|
+
def drivers
|
45
|
+
DriversResource.new(self)
|
46
|
+
end
|
47
|
+
|
48
|
+
# Initializes a new Faraday connection
|
49
|
+
#
|
50
|
+
# @return [Faraday::Connection]
|
20
51
|
def connection
|
21
52
|
@connection ||= Faraday.new(params: default_params) do |conn|
|
22
53
|
conn.url_prefix = BASE_URL
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Versafleet
|
2
|
+
class DriversResource < Resource
|
3
|
+
# List All Drivers
|
4
|
+
#
|
5
|
+
# == Examples:
|
6
|
+
#
|
7
|
+
# client.drivers.list
|
8
|
+
# # set per page to 20
|
9
|
+
# client.drivers.list(per_page: 20)
|
10
|
+
# # move to page 2
|
11
|
+
# client.drivers.list(page: 2, per_page: 20)
|
12
|
+
#
|
13
|
+
# {https://versafleet.docs.apiary.io/#reference/0/drivers-api/list-all-drivers VersaFleet API}
|
14
|
+
#
|
15
|
+
# @param params [Hash] the filter query
|
16
|
+
# @return [Collection]
|
17
|
+
def list(**params)
|
18
|
+
response = get_request("drivers", params: params)
|
19
|
+
Collection.from_response(response, key: "drivers", type: Driver)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Get Driver details
|
23
|
+
#
|
24
|
+
# == Examples:
|
25
|
+
#
|
26
|
+
# client.drivers.retrieve(driver_id: 123)
|
27
|
+
#
|
28
|
+
# {https://versafleet.docs.apiary.io/#reference/0/drivers-api/show-a-driver VersaFleet API}
|
29
|
+
#
|
30
|
+
# @param driver_id [Integer] Driver ID
|
31
|
+
# @return [Driver]
|
32
|
+
def retrieve(driver_id:)
|
33
|
+
Driver.new get_request("drivers/#{driver_id}").body.dig("driver")
|
34
|
+
end
|
35
|
+
|
36
|
+
# Create a Driver
|
37
|
+
#
|
38
|
+
# == Examples:
|
39
|
+
#
|
40
|
+
# client.drivers.create(driver: {name: "Yolo", dob: "1990-09-09"})
|
41
|
+
#
|
42
|
+
# {https://versafleet.docs.apiary.io/#reference/0/drivers-api/create-a-driver VersaFleet API}
|
43
|
+
#
|
44
|
+
# @param driver [Hash] Driver request payload
|
45
|
+
# @return [Driver]
|
46
|
+
def create(driver:)
|
47
|
+
payload = {driver: driver}
|
48
|
+
Driver.new post_request("drivers", body: payload).body.dig("driver")
|
49
|
+
end
|
50
|
+
|
51
|
+
# Update Driver
|
52
|
+
#
|
53
|
+
# == Examples:
|
54
|
+
#
|
55
|
+
# client.drivers.update(driver_id: 123, driver: {name: "John"})
|
56
|
+
#
|
57
|
+
# {https://versafleet.docs.apiary.io/#reference/0/drivers-api/update-a-driver VersaFleet API}
|
58
|
+
#
|
59
|
+
# @param driver_id [Integer] Driver ID
|
60
|
+
# @param driver [Hash] Driver request payload
|
61
|
+
# @return [Driver]
|
62
|
+
def update(driver_id:, driver:)
|
63
|
+
payload = {driver: driver}
|
64
|
+
Driver.new put_request("drivers/#{driver_id}", body: payload).body.dig("driver")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -1,26 +1,95 @@
|
|
1
1
|
module Versafleet
|
2
2
|
class JobsResource < Resource
|
3
|
+
# List All Jobs
|
4
|
+
#
|
5
|
+
# == Examples:
|
6
|
+
#
|
7
|
+
# client.jobs.list
|
8
|
+
# # set per page to 20
|
9
|
+
# client.jobs.list(per_page: 20)
|
10
|
+
# # move to page 2
|
11
|
+
# client.jobs.list(page: 2, per_page: 20)
|
12
|
+
# # filter by Customer ID
|
13
|
+
# client.jobs.list(customer_id: 1231)
|
14
|
+
#
|
15
|
+
# {https://versafleet.docs.apiary.io/#reference/0/jobs-v2-api/list-all-jobs VersaFleet API}
|
16
|
+
#
|
17
|
+
# @param params [Hash] the filter query
|
18
|
+
# @return [Collection]
|
3
19
|
def list(**params)
|
4
20
|
response = get_request("v2/jobs", params: params)
|
5
21
|
Collection.from_response(response, key: "jobs", type: Job)
|
6
22
|
end
|
7
23
|
|
24
|
+
# Create a Job
|
25
|
+
#
|
26
|
+
# == Examples:
|
27
|
+
#
|
28
|
+
# # see the VersaFleet API for the request body reference
|
29
|
+
# client.jobs.create(job: {})
|
30
|
+
#
|
31
|
+
# {https://versafleet.docs.apiary.io/#reference/0/jobs-v2-api/create-a-new-job VersaFleet API}
|
32
|
+
#
|
33
|
+
# @param attributes [Hash] Request body
|
34
|
+
# @return [Job]
|
8
35
|
def create(**attributes)
|
9
36
|
Job.new post_request("v2/jobs", body: attributes).body.dig("job")
|
10
37
|
end
|
11
38
|
|
39
|
+
# Update Job
|
40
|
+
#
|
41
|
+
# == Examples:
|
42
|
+
#
|
43
|
+
# # see the VersaFleet API for the request body reference
|
44
|
+
# client.jobs.update(job_id: 123, job: {})
|
45
|
+
#
|
46
|
+
# {https://versafleet.docs.apiary.io/#reference/0/jobs-v2-api/update-job-or-base-task-details VersaFleet API}
|
47
|
+
#
|
48
|
+
# @param job_id [Integer] Job ID
|
49
|
+
# @param attributes [Hash] Request body
|
50
|
+
# @return [Job]
|
12
51
|
def update(job_id:, **attributes)
|
13
52
|
Job.new put_request("v2/jobs/#{job_id}", body: attributes).body.dig("job")
|
14
53
|
end
|
15
54
|
|
55
|
+
# Get Job details
|
56
|
+
#
|
57
|
+
# == Examples:
|
58
|
+
#
|
59
|
+
# client.jobs.retrieve(job_id: 123)
|
60
|
+
#
|
61
|
+
# {https://versafleet.docs.apiary.io/#reference/0/jobs-v2-api/view-details-of-a-job VersaFleet API}
|
62
|
+
#
|
63
|
+
# @param job_id [Integer] Job ID
|
64
|
+
# @return [Job]
|
16
65
|
def retrieve(job_id:)
|
17
66
|
Job.new get_request("v2/jobs/#{job_id}").body.dig("job")
|
18
67
|
end
|
19
68
|
|
69
|
+
# Cancel a Job
|
70
|
+
#
|
71
|
+
# == Examples:
|
72
|
+
#
|
73
|
+
# client.jobs.cancel(job_id: 123)
|
74
|
+
#
|
75
|
+
# {https://versafleet.docs.apiary.io/#reference/0/jobs-v2-api/cancel-a-job VersaFleet API}
|
76
|
+
#
|
77
|
+
# @param job_id [Integer] Job ID
|
20
78
|
def cancel(job_id:)
|
79
|
+
# TODO: Remove Job object return
|
21
80
|
Job.new put_request("v2/jobs/#{job_id}/cancel", body: {}).body
|
22
81
|
end
|
23
82
|
|
83
|
+
# List Tasks of Job
|
84
|
+
#
|
85
|
+
# == Examples:
|
86
|
+
#
|
87
|
+
# client.jobs.list_tasks(job_id: 123)
|
88
|
+
#
|
89
|
+
# {https://versafleet.docs.apiary.io/#reference/0/jobs-v2-api/list-tasks-of-job VersaFleet API}
|
90
|
+
#
|
91
|
+
# @param job_id [Integer] Job ID
|
92
|
+
# @return [Collection]
|
24
93
|
def list_tasks(job_id:)
|
25
94
|
response = get_request("v2/jobs/#{job_id}/tasks")
|
26
95
|
Collection.from_response(response, key: "tasks", type: Task)
|
@@ -1,86 +1,280 @@
|
|
1
1
|
module Versafleet
|
2
2
|
class TasksResource < Resource
|
3
|
+
# List All Tasks
|
4
|
+
#
|
5
|
+
# == Examples:
|
6
|
+
#
|
7
|
+
# client.tasks.list
|
8
|
+
# # set per page to 20
|
9
|
+
# client.tasks.list(per_page: 20)
|
10
|
+
# # set specific date
|
11
|
+
# client.tasks.list(date: "2021-01-01")
|
12
|
+
#
|
13
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/list-all-tasks VersaFleet API}
|
14
|
+
#
|
15
|
+
# @param params [Hash] the filter query
|
16
|
+
# @return [Collection]
|
3
17
|
def list(**params)
|
4
18
|
response = get_request("tasks", params: params)
|
5
19
|
Collection.from_response(response, key: "tasks", type: Task)
|
6
20
|
end
|
7
21
|
|
22
|
+
# List All Tasks by State
|
23
|
+
#
|
24
|
+
# == Examples:
|
25
|
+
#
|
26
|
+
# client.tasks.list_by_state
|
27
|
+
# # tasks by state
|
28
|
+
# client.tasks.list_by_state(state: "completed")
|
29
|
+
#
|
30
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/list-all-tasks-by-state VersaFleet API}
|
31
|
+
#
|
32
|
+
# @param params [Hash] the filter query
|
33
|
+
# @return [Collection]
|
8
34
|
def list_by_state(**params)
|
9
35
|
response = get_request("tasks/by_state", params: params)
|
10
36
|
Collection.from_response(response, key: "tasks", type: Task)
|
11
37
|
end
|
12
38
|
|
39
|
+
# Get Task details
|
40
|
+
#
|
41
|
+
# == Examples:
|
42
|
+
#
|
43
|
+
# client.tasks.retrieve(task_id: 123)
|
44
|
+
#
|
45
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/view-details-of-a-task VersaFleet API}
|
46
|
+
#
|
47
|
+
# @param task_id [Integer] Task ID
|
48
|
+
# @return [Task]
|
13
49
|
def retrieve(task_id:)
|
14
50
|
Task.new get_request("tasks/#{task_id}").body.dig("task")
|
15
51
|
end
|
16
52
|
|
53
|
+
# Get Task details by Tracking ID
|
54
|
+
#
|
55
|
+
# == Examples:
|
56
|
+
#
|
57
|
+
# client.tasks.retrieve_by_tracking_id(tracking_id: "1234567891100")
|
58
|
+
#
|
59
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/view-limited-task-details-from-tracking-id VersaFleet API}
|
60
|
+
#
|
61
|
+
# @param tracking_id [String] Tracking ID
|
62
|
+
# @return [Task]
|
17
63
|
def retrieve_by_tracking_id(tracking_id:)
|
18
64
|
Task.new post_request("tasks/#{tracking_id}/track", body: {}).body.dig("task")
|
19
65
|
end
|
20
66
|
|
67
|
+
# Update Task
|
68
|
+
#
|
69
|
+
# == Examples:
|
70
|
+
#
|
71
|
+
# client.tasks.update(task_id: 123, task_attributes: {})
|
72
|
+
#
|
73
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/update-a-task-detail VersaFleet API}
|
74
|
+
#
|
75
|
+
# @param task_id [Integer] Task ID
|
76
|
+
# @param task_attributes [Hash] Task request payload
|
77
|
+
# @return [Task]
|
21
78
|
def update(task_id:, task_attributes:)
|
22
79
|
payload = {task_attributes: task_attributes}
|
23
80
|
Task.new put_request("tasks/#{task_id}", body: payload).body.dig("task")
|
24
81
|
end
|
25
82
|
|
26
|
-
#
|
83
|
+
# Add Task to Job
|
84
|
+
#
|
85
|
+
# == Examples:
|
86
|
+
#
|
87
|
+
# client.tasks.create(task_attributes: {})
|
88
|
+
#
|
89
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/add-a-new-task-to-a-job VersaFleet API}
|
90
|
+
#
|
91
|
+
# @param task_attributes [Hash] Task request payload
|
92
|
+
# @return [Task]
|
27
93
|
def create(task_attributes:)
|
94
|
+
# TODO: Add support for allocate_id
|
28
95
|
payload = {task_attributes: task_attributes}
|
29
96
|
Task.new post_request("tasks", body: payload).body.dig("task")
|
30
97
|
end
|
31
98
|
|
99
|
+
# Assign a Driver to Task
|
100
|
+
#
|
101
|
+
# == Examples:
|
102
|
+
#
|
103
|
+
# client.tasks.assign(task_id: 123, task: {driver_id: 12, vehicle_id: 3, remarks: "Notes"})
|
104
|
+
#
|
105
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/assign-a-driver-to-a-task VersaFleet API}
|
106
|
+
#
|
107
|
+
# @param task_id [Integer] Task ID
|
108
|
+
# @param task [Hash] Driver and Vehicle details
|
109
|
+
# @return [Task]
|
32
110
|
def assign(task_id:, task:)
|
33
111
|
payload = {task: task}
|
34
112
|
Task.new put_request("tasks/#{task_id}/assign", body: payload).body.dig("task")
|
35
113
|
end
|
36
114
|
|
115
|
+
# Assign a Driver to Multiple Tasks
|
116
|
+
#
|
117
|
+
# == Examples:
|
118
|
+
#
|
119
|
+
# client.tasks.assign_multiple(task: {ids: [12,21], driver_id: 11, vehicle_id: 2, remarks: "Notes"})
|
120
|
+
#
|
121
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/assign-a-driver-to-multiple-tasks VersaFleet API}
|
122
|
+
#
|
123
|
+
# @param task [Hash] Task IDs, Driver and Vehicle details
|
37
124
|
def assign_multiple(task:)
|
38
125
|
payload = {task: task}
|
39
126
|
put_request("tasks/assign", body: payload).body
|
40
127
|
end
|
41
128
|
|
129
|
+
# Unssign a Driver from Task
|
130
|
+
#
|
131
|
+
# == Examples:
|
132
|
+
#
|
133
|
+
# client.tasks.unassign(task_id: 123)
|
134
|
+
#
|
135
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/unassign-a-driver-from-a-task VersaFleet API}
|
136
|
+
#
|
137
|
+
# @param task_id [Integer] Task ID
|
138
|
+
# @return [Task]
|
42
139
|
def unassign(task_id:)
|
43
140
|
Task.new put_request("tasks/#{task_id}/unassign", body: {}).body.dig("task")
|
44
141
|
end
|
45
142
|
|
143
|
+
# Unsssign a Driver from Multiple Tasks
|
144
|
+
#
|
145
|
+
# == Examples:
|
146
|
+
#
|
147
|
+
# client.tasks.unassign_multiple(task: {ids: [123,213]})
|
148
|
+
#
|
149
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/unassign-a-driver-from-multiple-tasks VersaFleet API}
|
150
|
+
#
|
151
|
+
# @param task [Hash] Task IDs
|
46
152
|
def unassign_multiple(task:)
|
47
153
|
payload = {task: task}
|
48
154
|
put_request("tasks/unassign", body: payload).body
|
49
155
|
end
|
50
156
|
|
157
|
+
# Cancel a Task
|
158
|
+
#
|
159
|
+
# == Examples:
|
160
|
+
#
|
161
|
+
# client.tasks.cancel(task_id: 123)
|
162
|
+
#
|
163
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/cancel-a-task VersaFleet API}
|
164
|
+
#
|
165
|
+
# @param task_id [Integer] Task ID
|
51
166
|
def cancel(task_id:)
|
52
167
|
put_request("tasks/#{task_id}/cancel", body: {}).body
|
53
168
|
end
|
54
169
|
|
170
|
+
# Complete a Task
|
171
|
+
#
|
172
|
+
# == Examples:
|
173
|
+
#
|
174
|
+
# client.tasks.complete(task_id: 123)
|
175
|
+
#
|
176
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/complete-/-succeed-a-task VersaFleet API}
|
177
|
+
#
|
178
|
+
# @param task_id [Integer] Task ID
|
55
179
|
def complete(task_id:)
|
56
180
|
put_request("tasks/#{task_id}/set_successful", body: {}).body
|
57
181
|
end
|
58
182
|
|
183
|
+
# Incomplete a Task
|
184
|
+
#
|
185
|
+
# == Examples:
|
186
|
+
#
|
187
|
+
# client.tasks.incomplete(task_id: 123)
|
188
|
+
#
|
189
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/incomplete-/-fail-a-task VersaFleet API}
|
190
|
+
#
|
191
|
+
# @param task_id [Integer] Task ID
|
59
192
|
def incomplete(task_id:)
|
60
193
|
put_request("tasks/#{task_id}/set_failed", body: {}).body
|
61
194
|
end
|
62
195
|
|
196
|
+
# Set a Task State
|
197
|
+
#
|
198
|
+
# == Examples:
|
199
|
+
#
|
200
|
+
# client.tasks.set_state(task_id: 123, to_state: "waiting_for_acknowledgement")
|
201
|
+
#
|
202
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/set-a-task-state VersaFleet API}
|
203
|
+
#
|
204
|
+
# @param task_id [Integer] Task ID
|
205
|
+
# @param to_state [String] Task state
|
63
206
|
def set_state(task_id:, to_state:)
|
64
207
|
payload = {to_state: to_state}
|
65
208
|
put_request("tasks/#{task_id}/state", body: payload).body
|
66
209
|
end
|
67
210
|
|
211
|
+
# Archive a Task
|
212
|
+
#
|
213
|
+
# == Examples:
|
214
|
+
#
|
215
|
+
# client.tasks.archive(task_id: 123)
|
216
|
+
#
|
217
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/archive-a-task VersaFleet API}
|
218
|
+
#
|
219
|
+
# @param task_id [Integer] Task ID
|
220
|
+
# @return [Task]
|
68
221
|
def archive(task_id:)
|
69
222
|
Task.new put_request("tasks/#{task_id}/archive", body: {}).body.dig("task")
|
70
223
|
end
|
71
224
|
|
225
|
+
# Unarchive a Task
|
226
|
+
#
|
227
|
+
# == Examples:
|
228
|
+
#
|
229
|
+
# client.tasks.unarchive(task_id: 123)
|
230
|
+
#
|
231
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/unarchive-a-task VersaFleet API}
|
232
|
+
#
|
233
|
+
# @param task_id [Integer] Task ID
|
234
|
+
# @return [Task]
|
72
235
|
def unarchive(task_id:)
|
73
236
|
Task.new put_request("tasks/#{task_id}/unarchive", body: {}).body.dig("task")
|
74
237
|
end
|
75
238
|
|
239
|
+
# View Task Completion Histories of a Task
|
240
|
+
#
|
241
|
+
# == Examples:
|
242
|
+
#
|
243
|
+
# client.tasks.completion_histories(task_id: 123)
|
244
|
+
#
|
245
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/view-task-completion-histories-of-a-task VersaFleet API}
|
246
|
+
#
|
247
|
+
# @param task_id [Integer] Task ID
|
248
|
+
# @return [Task]
|
76
249
|
def completion_histories(task_id:)
|
77
250
|
Task.new get_request("tasks/#{task_id}/task_completion_histories").body
|
78
251
|
end
|
79
252
|
|
253
|
+
# View Base Task Completion Histories of a Task
|
254
|
+
#
|
255
|
+
# == Examples:
|
256
|
+
#
|
257
|
+
# client.tasks.base_completion_histories(task_id: 123)
|
258
|
+
#
|
259
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/view-base-task-completion-histories-of-a-task VersaFleet API}
|
260
|
+
#
|
261
|
+
# @param task_id [Integer] Task ID
|
262
|
+
# @return [Task]
|
80
263
|
def base_completion_histories(task_id:)
|
81
264
|
Task.new get_request("tasks/#{task_id}/base_task_completion_histories").body
|
82
265
|
end
|
83
266
|
|
267
|
+
# Allocate a Task
|
268
|
+
#
|
269
|
+
# == Examples:
|
270
|
+
#
|
271
|
+
# client.tasks.allocate(task_id: 123, sub_account_id: 211)
|
272
|
+
#
|
273
|
+
# {https://versafleet.docs.apiary.io/#reference/0/tasks-api/allocate-a-task VersaFleet API}
|
274
|
+
#
|
275
|
+
# @param task_id [Integer] Task ID
|
276
|
+
# @param sub_account_id [Integer] Transporter ID
|
277
|
+
# @return [Task]
|
84
278
|
def allocate(task_id:, sub_account_id:)
|
85
279
|
payload = {task: {allocatee_id: sub_account_id}}
|
86
280
|
Task.new put_request("tasks/#{task_id}/allocate", body: payload).body.dig("task")
|
data/lib/versafleet/version.rb
CHANGED
data/lib/versafleet.rb
CHANGED
@@ -12,8 +12,10 @@ module Versafleet
|
|
12
12
|
# Resources (like high level API endpoints)
|
13
13
|
autoload :JobsResource, "versafleet/resources/jobs"
|
14
14
|
autoload :TasksResource, "versafleet/resources/tasks"
|
15
|
+
autoload :DriversResource, "versafleet/resources/drivers"
|
15
16
|
|
16
17
|
# Classes used to return a nicer object wrapping the response data
|
17
18
|
autoload :Job, "versafleet/objects/job"
|
18
19
|
autoload :Task, "versafleet/objects/task"
|
20
|
+
autoload :Driver, "versafleet/objects/driver"
|
19
21
|
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.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maful Prayoga A
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -38,14 +38,13 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.1'
|
41
|
-
description:
|
41
|
+
description:
|
42
42
|
email:
|
43
43
|
- mafulprayoga@gmail.com
|
44
44
|
executables: []
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
-
- ".github/workflows/release.yml"
|
49
48
|
- ".github/workflows/test.yml"
|
50
49
|
- ".gitignore"
|
51
50
|
- CODE_OF_CONDUCT.md
|
@@ -60,9 +59,11 @@ files:
|
|
60
59
|
- lib/versafleet/collection.rb
|
61
60
|
- lib/versafleet/error.rb
|
62
61
|
- lib/versafleet/object.rb
|
62
|
+
- lib/versafleet/objects/driver.rb
|
63
63
|
- lib/versafleet/objects/job.rb
|
64
64
|
- lib/versafleet/objects/task.rb
|
65
65
|
- lib/versafleet/resource.rb
|
66
|
+
- lib/versafleet/resources/drivers.rb
|
66
67
|
- lib/versafleet/resources/jobs.rb
|
67
68
|
- lib/versafleet/resources/tasks.rb
|
68
69
|
- lib/versafleet/version.rb
|
@@ -75,7 +76,7 @@ metadata:
|
|
75
76
|
bug_tracker_uri: https://github.com/maful/versafleet-ruby/issues
|
76
77
|
source_code_uri: https://github.com/maful/versafleet-ruby
|
77
78
|
github_repo: https://github.com/maful/versafleet-ruby
|
78
|
-
post_install_message:
|
79
|
+
post_install_message:
|
79
80
|
rdoc_options: []
|
80
81
|
require_paths:
|
81
82
|
- lib
|
@@ -91,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
92
|
version: '0'
|
92
93
|
requirements: []
|
93
94
|
rubygems_version: 3.2.22
|
94
|
-
signing_key:
|
95
|
+
signing_key:
|
95
96
|
specification_version: 4
|
96
97
|
summary: Ruby bindings for the VersaFleet API
|
97
98
|
test_files: []
|
@@ -1,41 +0,0 @@
|
|
1
|
-
name: Build + Release
|
2
|
-
|
3
|
-
on:
|
4
|
-
push:
|
5
|
-
tags:
|
6
|
-
- "v*.*.*"
|
7
|
-
|
8
|
-
jobs:
|
9
|
-
build:
|
10
|
-
runs-on: ubuntu-20.04
|
11
|
-
|
12
|
-
strategy:
|
13
|
-
matrix:
|
14
|
-
ruby: ["2.5", "2.6", "2.7", "3.0"]
|
15
|
-
|
16
|
-
steps:
|
17
|
-
- uses: actions/checkout@v2
|
18
|
-
|
19
|
-
- name: Set up Ruby
|
20
|
-
uses: ruby/setup-ruby@v1
|
21
|
-
with:
|
22
|
-
ruby-version: ${{ matrix.ruby }}
|
23
|
-
bundler-cache: true
|
24
|
-
|
25
|
-
- name: StandardRb check
|
26
|
-
run: bundle exec standardrb
|
27
|
-
|
28
|
-
- name: Run tests
|
29
|
-
run: |
|
30
|
-
bundle exec rake test
|
31
|
-
|
32
|
-
- name: Publish to RubyGems
|
33
|
-
run: |
|
34
|
-
mkdir -p $HOME/.gem
|
35
|
-
touch $HOME/.gem/credentials
|
36
|
-
chmod 0600 $HOME/.gem/credentials
|
37
|
-
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
38
|
-
gem build *.gemspec
|
39
|
-
gem push *.gem
|
40
|
-
env:
|
41
|
-
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|