my_john_deere_api 2.3.3 → 2.3.4

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: e82399b62eca7ecbf5c1e1f9d7f0de2391c909bed4426ccafbc19a3b555a2df2
4
- data.tar.gz: e38342e0db2b4adc5cc6a9a6bba54b91c7aeb2e56e819a25696fc3c0cde75447
3
+ metadata.gz: 0b6ea750328ecdcb653d61bbadf19ab4ab23ef2fb712963bda1351736ffedb37
4
+ data.tar.gz: '059eab2d2bbb7d8d716bde8f61f5ce935c46039dfbe6c82b933041e4f90fd072'
5
5
  SHA512:
6
- metadata.gz: 2e80cfb7dbd6f7fb209403d5d92405e1beacf5282612747f449d245dffea7b182e2dc913a57acbe478a9f986e8b6b421add72e525c9d34def8ffbfe22967dd15
7
- data.tar.gz: 743a9373b0646e76ace34001ae95937555c1aa00eea2c9bbcc4b6d6896f4784d67d1ecd07b4e7116182de60066c01d5ab4468c595f2f68f0a9ad401baf727a69
6
+ metadata.gz: d9e2285aa182a610b45b757707a26edad1e2ae342ce7ba62609c6a486f247fe3beaaad9e7df39a2ce2077b099b1a31edd53b1732fcdcde1d5b7253da648a7bdb
7
+ data.tar.gz: a9fad3831aa447433ee0969eb839d8e21245a29e955b1602ba560b75a989c8737c10c1489474d3982a7f71398407adfb9900968a240fd3cd677b05990e9dc3de
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![CircleCI](https://circleci.com/gh/Intellifarm/my_john_deere_api.svg?style=svg)](https://circleci.com/gh/Intellifarm/my_john_deere_api)
4
4
 
5
5
  This client allows you to connect the [MyJohnDeere API](https://developer.deere.com/#!documentation)
6
- without having to code your own oauth process, API requests, and pagination.
6
+ without having to code your own oAuth process, API requests, and pagination.
7
7
 
8
8
  * Works with Rails, but does not require it
9
9
  * Supports both sandbox and live mode
@@ -23,6 +23,7 @@ without having to code your own oauth process, API requests, and pagination.
23
23
  * [Contribution Definitions](#contribution-definitions)
24
24
  * [Organizations](#organizations)
25
25
  * [Assets](#assets)
26
+ * [Asset Locations](#asset-locations)
26
27
  * [Direct API Requests](#direct-api-requests)
27
28
  * [GET](#get)
28
29
  * [POST](#post)
@@ -435,6 +436,128 @@ asset.save
435
436
  ```
436
437
 
437
438
 
439
+ ### [Asset Locations](https://developer.deere.com/#!documentation&doc=.%2Fmyjohndeere%2Fassets.htm)
440
+
441
+ Handles an asset's locations. Asset Location collections support the following methods:
442
+
443
+ * create(attributes)
444
+ * all
445
+ * count
446
+ * first
447
+
448
+ An individual location supports the following methods:
449
+
450
+ * timestamp
451
+ * geometry
452
+ * measurement\_data
453
+
454
+ ```ruby
455
+ asset = organizations.assets.first
456
+ # => the first asset returned by the organization
457
+
458
+ asset.locations
459
+ # => collection of locations belonging to this asset
460
+
461
+ location = asset.locations.first
462
+ # => the first location returned by the asset. Note that locations do not have their own id's
463
+ # in the JD platform, and therefore cannot be requested individually via a "find" method.
464
+
465
+ location.timestamp
466
+ # => "2019-11-11T23:00:00.000Z"
467
+ # John Deere includes 3 decimal places in the format, but does not actually
468
+ # store fractions of a second, so it will always end in ".000". This is
469
+ # important, because timestamps must be unique.
470
+
471
+ location.geometry
472
+ # => a GeoJSON formatted hash, for example:
473
+ # {
474
+ # "type"=>"Feature",
475
+ # "geometry"=>{
476
+ # "geometries"=>[
477
+ # {
478
+ # "coordinates"=>[-95.123456, 40.123456],
479
+ # "type"=>"Point"
480
+ # }
481
+ # ],
482
+ # "type"=>"GeometryCollection"
483
+ # }
484
+ # }
485
+
486
+ location.measurement_data
487
+ # => the status details of this location, for example:
488
+ # [
489
+ # {
490
+ # "@type"=>"BasicMeasurement",
491
+ # "name"=>"[Soil Temperature](http://example.com/current_temperature)",
492
+ # "value"=>"21.0",
493
+ # "unit"=>"°C"
494
+ # }
495
+ # ]
496
+ ```
497
+
498
+ The `create` method creates the location in the John Deere platform, and returns the newly created
499
+ object from John Deere. However, there will be no new information since there is no unique ID
500
+ generated. The timestamp submitted (which defaults to "now") will be rounded
501
+ to the nearest second.
502
+
503
+ ```ruby
504
+ locaton = asset.locatons.create(
505
+ # You can pass fractional seconds, but they will be truncated by JD.
506
+ timestamp: "2019-11-11T23:00:00.123Z",
507
+
508
+ # JD requires more complicated JSON geometry, but this client will convert a simple
509
+ # set of lat/long coordinates into the larger format automatically.
510
+ geometry: [-95.123456, 40.123456],
511
+
512
+ # This is a list of "measurements"
513
+ measurement_data: [
514
+ {
515
+ name: 'Temperature',
516
+ value: '68.0',
517
+ unit: 'F'
518
+ }
519
+ ]
520
+ )
521
+
522
+ location.timestamp
523
+ # => "2019-11-11T23:00:00.000Z"
524
+ # Note that the timestamp's fractional second is truncated by John Deere, though they
525
+ # still return the record with three digits of precision.
526
+
527
+ location.geometry
528
+ # => a GeoJSON formatted hash in its larger format
529
+ # {
530
+ # "type"=>"Feature",
531
+ # "geometry"=>{
532
+ # "geometries"=>[
533
+ # {
534
+ # "coordinates"=>[-95.123456, 40.123456],
535
+ # "type"=>"Point"
536
+ # }
537
+ # ],
538
+ # "type"=>"GeometryCollection"
539
+ # }
540
+ # }
541
+
542
+ location.measurement_data
543
+ # [
544
+ # {
545
+ # "@type"=>"BasicMeasurement",
546
+ # "name"=>"Temperature",
547
+ # "value"=>"68.0",
548
+ # "unit"=>"F"
549
+ # }
550
+ # ]
551
+
552
+ ```
553
+
554
+ There is no updating or deleting of a location. The newest location record always acts as the status
555
+ for the given asset, and is what appears on the map view.
556
+
557
+ Note that locations are called "Asset Locations" in John Deere, but we call the association "locations", as in
558
+ `asset.locations`, for brevity.
559
+
560
+
438
561
  ## Direct API Requests
439
562
 
440
563
  While the goal of the client is to eliminate the need to make/interpret calls to the John Deere API, it's important
@@ -544,7 +667,7 @@ Custom errors help clearly identify problems when using the client:
544
667
  * **InvalidRecordError** is raised when bad input has been given, in an attempt to create or update
545
668
  a record on the John Deere platform.
546
669
  * **MissingContributionDefinitionIdError** is raised when the optional contribution\_definition\_id
547
- has not been set in the client, but an operation has been attempted that requires it - like
670
+ has not been set in the client, but an operation has been attempted that requires it - like
548
671
  creating an asset in the John Deere platform.
549
672
  * **TypeMismatchError** is raised when a model is instantiated, typically when a record is received
550
673
  from John Deere and is being converted into a Ruby object. Model instantiation is normally handled
@@ -1,3 +1,3 @@
1
1
  module MyJohnDeereApi
2
- VERSION='2.3.3'
2
+ VERSION='2.3.4'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: my_john_deere_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.3
4
+ version: 2.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jaime Bellmyer
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-02-17 00:00:00.000000000 Z
12
+ date: 2020-02-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: vcr