versafleet 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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}}"
|