onfleet-ruby 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: 9795a4d38c0dd2a83ec469fec22fecac5392548b
4
- data.tar.gz: 529fabb99a08bee55a2d95a63e971009156c7934
3
+ metadata.gz: f1d19ee4307f4f027c05f2581baae87b5a52c1d0
4
+ data.tar.gz: a88178b746ab81416c9919b3df3c914cc7dca388
5
5
  SHA512:
6
- metadata.gz: cc259a233c2b0bbbac7aaf767a0830100db8a0d98dec7207ca24e2ca1430f424d918cbaf5faf9df94fd27f9f8228a2c8bbda3febe937329bec57f8d71cb2261b
7
- data.tar.gz: c52c2ed5675e153470b524dfeca72aa0cf323637a248d5965e1a3adeb0aecd34b09d3207ed5738ffec3512ac83f85eb63dd59c1ac3e8fc2fc6dbeb93d8ac0310
6
+ metadata.gz: 1a6f0b564028363c31263ec927caf5e84777bec52f3aee8c830e786cca80283bc01ed0004970ffbaf138fd65ae7789ed7b002e75c71ef52c0b146bfd0a9d478b
7
+ data.tar.gz: 721408e9ac056dc81ae3acdf62bbbf3c20530dc56c36c5f9aaa8a63f6d7b1b45aae8a5191ac65b735718640b69e1ce2fbc838c91388c398205c2511ddf79c2b4
data/README.md CHANGED
@@ -61,6 +61,7 @@ delegatee.country # => "US"
61
61
  | name | string | The administrator’s complete name. |
62
62
  | email | string | The administrator’s email address. |
63
63
  | phone | string | (Optional) The administrator's E.164-formatted phone number. |
64
+ | metadata | array | (Optional) Any associated metadata |
64
65
 
65
66
  **Create**
66
67
 
@@ -95,7 +96,8 @@ Worker
95
96
  | name | string | The workers complete name. |
96
97
  | phone | string | The worker's phone number. |
97
98
  | teams | string Array | One or more team IDs of which the worker is a member.|
98
- | vehicle | obect | (Optional) The worker’s vehicle, providing no vehicle details is interpreted as the worker being on foot. |
99
+ | vehicle | object | (Optional) The worker’s vehicle, providing no vehicle details is interpreted as the worker being on foot. |
100
+ | metadata | array | (Optional) Any associated metadata |
99
101
 
100
102
  Vehicle
101
103
 
@@ -164,6 +166,7 @@ Destination
164
166
  | address | object | The destination’s street address details. |
165
167
  | location | array | (Optional) The `[ longitude, latitude ]` geographic coordinates. If missing, the API will geocode based on the `address` details provided. Note that geocoding may slightly modify the format of the address properties. |
166
168
  | notes | string | (Optional) Notes for the destination |
169
+ | metadata | array | (Optional) Any associated metadata |
167
170
 
168
171
  Address
169
172
 
@@ -181,7 +184,6 @@ Address
181
184
 
182
185
 
183
186
 
184
-
185
187
  **Create**
186
188
  ```ruby
187
189
  destination = Onfleet::Destination.create({address: {unparsed: '200 12th st, 94103, ca'} })
@@ -204,6 +206,7 @@ Onfleet::Destination('DEST_ID')
204
206
  | notes | string | (Optional) Notes for the recipient. |
205
207
  | skip_sms_notifications | boolean | (Optional) To disable sms notification. Defaults to `false` |
206
208
  | skip_phone_number_verificaton | boolean | (Optional) Whether to skip validation of the phone number. |
209
+ | metadata | array | (Optional) Any associated metadata |
207
210
 
208
211
  **Create**
209
212
  ```ruby
@@ -239,11 +242,11 @@ rec.name = "John Doe"
239
242
  rec = Onfleet::Recipient.find('phone', '4155556789')
240
243
  ```
241
244
 
242
- ##Tasks
245
+ ## Tasks
243
246
  | Name | Type | Description |
244
247
  | ----------- |--------| --------------|
245
- | destination | string | `ID` of the destination. |
246
- | recipients | string array | An array containing zero or one IDs of the task's recipients |
248
+ | destination | string or hash | `ID` of the destination, or the Destination data itself |
249
+ | recipients | array of string or hash | An array containing zero or one IDs of the task's recipients; alternately, an array containing Recipient data as entries |
247
250
  | merchant | string | (Optional) `ID` of merchant organization. |
248
251
  | executor | string | (Optional) `ID` of the executor organization. |
249
252
  | complete_after | number | (Optional) A timestamp for the earliest time the task should be completed. |
@@ -252,12 +255,29 @@ rec = Onfleet::Recipient.find('phone', '4155556789')
252
255
  | dependencies | string array | (Optional) One or more IDs of tasks which must be completed prior to this task. |
253
256
  | notes | notes | (Optional) Notes for the task. |
254
257
  | auto_assign | object | (Optional) The automatic assignment options for the newly created task. See above for exact object structure and allowed values. |
258
+ | metadata | array | (Optional) Any associated metadata |
255
259
 
256
260
  **Create**
257
261
  ```ruby
258
262
  # First Create a destination and Recipient
259
263
  # Then create the task
260
- task = Onfleet::Task.create({recipient: ['REC_ID'], destination: 'DEC_ID' })
264
+ task = Onfleet::Task.create({recipients: ['REC_ID'], destination: 'DEC_ID' })
265
+
266
+ # Alternatively, create the Destination and Recipient in a single call to Onfleet
267
+ # If a recipient exists for the phone number, it will be updated with the new information
268
+ another_task = Onfleet::Task.create(
269
+ destination: {
270
+ address: {
271
+ unparsed: "123 Smith St"
272
+ },
273
+ notes: "Some destination notes"
274
+ },
275
+ recipients: [{
276
+ name: "Foo Bar",
277
+ phone: "987-654-3210",
278
+ notes: "Some recipient notes"
279
+ }]
280
+ )
261
281
  ```
262
282
 
263
283
  **Update**
@@ -288,7 +308,21 @@ Onfleet::Task.list({state: 0}) # => returns all tasks with state 0, see official
288
308
  Currently not supported
289
309
 
290
310
 
291
- ##Error Handling
311
+ ## Metadata
312
+ | Name | Type | Description |
313
+ | ----------- |--------| --------------|
314
+ | name | string | the name of the property |
315
+ | type | string | The type of the property. Must be one of [ ‘boolean’, ‘number’, ‘string’, ‘object’, ‘array’ ] |
316
+ | subtype | string | (Optional) Required only for entries of type array, used for future visualization purposes. Must be one of [ ‘boolean’, ‘number’, ‘string’, ‘object’ ]. |
317
+ | value | string | The value of the property. The JSON type must match the type (and subtype) provided for the entry. |
318
+
319
+ ```ruby
320
+ # Returns an array with entities matching the metadata query
321
+ # Any entity supporting metadata can be queried (eg: Admins, Workers, Tasks, Destinations, Recipients)
322
+ tasks = Onfleet::Task.query_by_metadata([{name: "property", type: "string", value: "abc"}])
323
+ ```
324
+
325
+ ## Error Handling
292
326
  ```ruby
293
327
  begin
294
328
  # perform onfleet api requests
data/lib/onfleet-ruby.rb CHANGED
@@ -20,7 +20,10 @@ require 'onfleet-ruby/actions/update'
20
20
  require 'onfleet-ruby/actions/get'
21
21
  require 'onfleet-ruby/actions/list'
22
22
  require 'onfleet-ruby/actions/delete'
23
-
23
+ <<<<<<< HEAD
24
+ =======
25
+ require 'onfleet-ruby/actions/query_metadata'
26
+ >>>>>>> 5c063de65d354e63cb5ac4f7589fbb9c1ae99c5a
24
27
 
25
28
  # Resources
26
29
  require 'onfleet-ruby/onfleet_object'
@@ -0,0 +1,17 @@
1
+ module Onfleet
2
+ module Actions
3
+ module QueryMetadata
4
+ module ClassMethods
5
+ def query_by_metadata metadata
6
+ api_url = "#{self.api_url}/metadata"
7
+ response = Onfleet.request(api_url, :post, metadata)
8
+ response.map { |item| Util.constantize("#{self}").new(item) } if response.is_a? Array
9
+ end
10
+ end
11
+
12
+ def self.included base
13
+ base.extend(ClassMethods)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -5,7 +5,7 @@ module Onfleet
5
5
  include Onfleet::Actions::Update
6
6
  include Onfleet::Actions::List
7
7
  include Onfleet::Actions::Delete
8
-
8
+ include Onfleet::Actions::QueryMetadata
9
9
 
10
10
  def self.api_url
11
11
  '/admins'
@@ -3,7 +3,7 @@ module Onfleet
3
3
  include Onfleet::Actions::Create
4
4
  include Onfleet::Actions::Save
5
5
  include Onfleet::Actions::Get
6
-
6
+ include Onfleet::Actions::QueryMetadata
7
7
 
8
8
  def self.api_url
9
9
  '/destinations'
@@ -57,7 +57,7 @@ module Onfleet
57
57
 
58
58
  def parse_onfleet_obj obj
59
59
  if obj.is_a?(OnfleetObject)
60
- if obj.is_a?(Destination) || obj.is_a?(Recipient) || obj.is_a?(Task)
60
+ if obj.respond_to?('id') && obj.id && (obj.is_a?(Destination) || obj.is_a?(Recipient) || obj.is_a?(Task))
61
61
  obj.id
62
62
  else
63
63
  obj.attributes
@@ -5,6 +5,7 @@ module Onfleet
5
5
  include Onfleet::Actions::Save
6
6
  include Onfleet::Actions::Find
7
7
  include Onfleet::Actions::Get
8
+ include Onfleet::Actions::QueryMetadata
8
9
 
9
10
  def self.api_url
10
11
  "/recipients"
@@ -6,7 +6,7 @@ module Onfleet
6
6
  include Onfleet::Actions::Get
7
7
  include Onfleet::Actions::List
8
8
  include Onfleet::Actions::Delete
9
-
9
+ include Onfleet::Actions::QueryMetadata
10
10
 
11
11
  def self.api_url
12
12
  '/tasks'
@@ -6,7 +6,7 @@ module Onfleet
6
6
  include Onfleet::Actions::Save
7
7
  include Onfleet::Actions::Update
8
8
  include Onfleet::Actions::Delete
9
-
9
+ include Onfleet::Actions::QueryMetadata
10
10
 
11
11
  def self.api_url
12
12
  '/workers'
data/onfleet-ruby.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'onfleet-ruby'
3
- s.version = '0.1.1'
3
+ s.version = '0.1.2'
4
4
  s.date = '2015-08-03'
5
5
  s.summary = "Onfleet ruby api"
6
6
  s.description = "To interact with Onfleet's API"
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1,2 @@
1
- require 'onfleet'
2
- require File.expand_path('./test_data', __FILE__)
1
+ require 'onfleet-ruby'
2
+ require File.expand_path('../test_data', __FILE__)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onfleet-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Wargnier
@@ -14,34 +14,34 @@ dependencies:
14
14
  name: rest-client
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 3.3.0
34
- - - '>='
34
+ - - ">="
35
35
  - !ruby/object:Gem::Version
36
36
  version: 3.0.0
37
37
  type: :development
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - ~>
41
+ - - "~>"
42
42
  - !ruby/object:Gem::Version
43
43
  version: 3.3.0
44
- - - '>='
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: 3.0.0
47
47
  description: To interact with Onfleet's API
@@ -50,8 +50,8 @@ executables: []
50
50
  extensions: []
51
51
  extra_rdoc_files: []
52
52
  files:
53
- - .gitignore
54
- - .rspec
53
+ - ".gitignore"
54
+ - ".rspec"
55
55
  - Gemfile
56
56
  - README.md
57
57
  - lib/onfleet-ruby.rb
@@ -60,6 +60,7 @@ files:
60
60
  - lib/onfleet-ruby/actions/find.rb
61
61
  - lib/onfleet-ruby/actions/get.rb
62
62
  - lib/onfleet-ruby/actions/list.rb
63
+ - lib/onfleet-ruby/actions/query_metadata.rb
63
64
  - lib/onfleet-ruby/actions/save.rb
64
65
  - lib/onfleet-ruby/actions/update.rb
65
66
  - lib/onfleet-ruby/address.rb
@@ -91,17 +92,17 @@ require_paths:
91
92
  - lib
92
93
  required_ruby_version: !ruby/object:Gem::Requirement
93
94
  requirements:
94
- - - '>='
95
+ - - ">="
95
96
  - !ruby/object:Gem::Version
96
97
  version: '0'
97
98
  required_rubygems_version: !ruby/object:Gem::Requirement
98
99
  requirements:
99
- - - '>='
100
+ - - ">="
100
101
  - !ruby/object:Gem::Version
101
102
  version: '0'
102
103
  requirements: []
103
104
  rubyforge_project:
104
- rubygems_version: 2.4.5
105
+ rubygems_version: 2.4.8
105
106
  signing_key:
106
107
  specification_version: 4
107
108
  summary: Onfleet ruby api