my_john_deere_api 0.2.0 → 0.3.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/lib/my_john_deere_api/errors.rb +12 -0
- data/lib/my_john_deere_api/helpers/uri_path.rb +9 -0
- data/lib/my_john_deere_api/helpers.rb +3 -0
- data/lib/my_john_deere_api/model/field.rb +25 -0
- data/lib/my_john_deere_api/model/organization.rb +31 -13
- data/lib/my_john_deere_api/model.rb +1 -0
- data/lib/my_john_deere_api/request/collection.rb +60 -50
- data/lib/my_john_deere_api/request/fields.rb +19 -0
- data/lib/my_john_deere_api/request.rb +1 -0
- data/lib/my_john_deere_api/version.rb +1 -1
- data/lib/my_john_deere_api.rb +3 -0
- data/test/lib/my_john_deere_api/helpers/test_uri_path.rb +28 -0
- data/test/lib/my_john_deere_api/model/test_field.rb +48 -0
- data/test/lib/my_john_deere_api/model/test_organization.rb +35 -2
- data/test/lib/my_john_deere_api/request/test_collection.rb +7 -0
- data/test/lib/my_john_deere_api/request/test_fields.rb +83 -0
- data/test/lib/my_john_deere_api/request/test_organizations.rb +19 -12
- data/test/lib/my_john_deere_api/test_helpers.rb +9 -0
- data/test/lib/my_john_deere_api/test_model.rb +4 -0
- data/test/lib/my_john_deere_api/test_request.rb +4 -0
- data/test/support/vcr/get_fields.yml +49 -0
- data/test/test_my_john_deere_api.rb +4 -0
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31aa8280a3df1a7eb45d47c7f5d8a3f6606316b5d7bec7ce42256a843beb0274
|
4
|
+
data.tar.gz: d1cff664da5725a67903fdfc1d71b344b26c038099b456295302cb4b0949f1b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 555d80933c95a91da91ed4892ecc8e3243d6d7df448ed220f8921973dbfa93737e98e9d5be74a96c7509d4361c05bba257828be37e49580b1b56c911da569ecc
|
7
|
+
data.tar.gz: 33efb9f16ef9323279aa6449b9bbc21c532db6130ee2bbb7da4dba47a93510c8d36af6efb4c17262805fe26a0e2f2e4ee083ed7a65fa98aadd00b00c9410e42a
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module MyJohnDeereApi
|
2
|
+
##
|
3
|
+
# This error is used in a context that will fail in the absence of
|
4
|
+
# a valid oAuth access token. We have classes that may only need
|
5
|
+
# access tokens for some use cases.
|
6
|
+
|
7
|
+
class AccessTokenError < StandardError
|
8
|
+
def initialize(message = "A valid oAuth Access Token must be supplied to use this feature.")
|
9
|
+
super
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module MyJohnDeereApi
|
2
|
+
class Model::Field
|
3
|
+
include Helpers::UriPath
|
4
|
+
|
5
|
+
attr_reader :name, :id, :links, :accessor
|
6
|
+
|
7
|
+
def initialize(record, accessor = nil)
|
8
|
+
@accessor = accessor
|
9
|
+
|
10
|
+
@name = record['name']
|
11
|
+
@id = record['id']
|
12
|
+
@archived = record['archived']
|
13
|
+
|
14
|
+
@links = {}
|
15
|
+
|
16
|
+
record['links'].each do |association|
|
17
|
+
@links[association['rel']] = uri_path(association['uri'])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def archived?
|
22
|
+
@archived
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,20 +1,38 @@
|
|
1
|
-
|
2
|
-
attr_reader :name, :type, :id, :links
|
1
|
+
require 'uri'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
@id = record['id']
|
8
|
-
@member = record['member']
|
3
|
+
module MyJohnDeereApi
|
4
|
+
class Model::Organization
|
5
|
+
include Helpers::UriPath
|
9
6
|
|
10
|
-
|
7
|
+
attr_reader :name, :type, :id, :links, :accessor
|
11
8
|
|
12
|
-
record
|
13
|
-
@
|
9
|
+
def initialize(record, accessor = nil)
|
10
|
+
@accessor = accessor
|
11
|
+
|
12
|
+
@name = record['name']
|
13
|
+
@type = record['type']
|
14
|
+
@id = record['id']
|
15
|
+
@member = record['member']
|
16
|
+
|
17
|
+
@links = {}
|
18
|
+
|
19
|
+
record['links'].each do |association|
|
20
|
+
@links[association['rel']] = uri_path(association['uri'])
|
21
|
+
end
|
14
22
|
end
|
15
|
-
end
|
16
23
|
|
17
|
-
|
18
|
-
|
24
|
+
def member?
|
25
|
+
@member
|
26
|
+
end
|
27
|
+
|
28
|
+
##
|
29
|
+
# fields associated with this organization
|
30
|
+
|
31
|
+
def fields
|
32
|
+
raise AccessTokenError unless accessor
|
33
|
+
|
34
|
+
return @fields if defined?(@fields)
|
35
|
+
@fields = MyJohnDeereApi::Request::Fields.new(accessor, organization: id).all
|
36
|
+
end
|
19
37
|
end
|
20
38
|
end
|
@@ -1,73 +1,83 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module MyJohnDeereApi
|
2
|
+
class Request::Collection
|
3
|
+
include Enumerable
|
4
|
+
include Helpers::UriPath
|
3
5
|
|
4
|
-
|
6
|
+
attr_reader :accessor, :associations
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
##
|
9
|
+
# accessor is an OAuth::AccessToken object which has the necessary
|
10
|
+
# credentials to make the desired requests.
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
def initialize(accessor, associations = {})
|
13
|
+
@accessor = accessor
|
14
|
+
@associations = associations
|
15
|
+
@items = []
|
16
|
+
end
|
14
17
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
+
##
|
19
|
+
# Iterate lazily through all records in the collection, fetching
|
20
|
+
# additional pages as needed.
|
18
21
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
22
|
+
def each(&block)
|
23
|
+
count.times do |index|
|
24
|
+
fetch if @items.size <= index
|
25
|
+
block.call(@items[index])
|
26
|
+
end
|
23
27
|
end
|
24
|
-
end
|
25
|
-
|
26
|
-
##
|
27
|
-
# Return all objects in the collection at once
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
@all = map { |i| i }
|
32
|
-
end
|
29
|
+
##
|
30
|
+
# Return all objects in the collection at once
|
33
31
|
|
34
|
-
|
35
|
-
|
32
|
+
def all
|
33
|
+
return @all if defined?(@all)
|
34
|
+
@all = map { |i| i }
|
35
|
+
end
|
36
36
|
|
37
|
-
|
38
|
-
|
39
|
-
end
|
37
|
+
##
|
38
|
+
# Total count of records, even before pagination
|
40
39
|
|
41
|
-
|
40
|
+
def count
|
41
|
+
@count ||= first_page['total']
|
42
|
+
end
|
42
43
|
|
43
|
-
|
44
|
-
return @first_page if defined?(@first_page)
|
44
|
+
private
|
45
45
|
|
46
|
-
|
46
|
+
def first_page
|
47
|
+
return @first_page if defined?(@first_page)
|
47
48
|
|
48
|
-
|
49
|
+
@first_page = JSON.parse(@accessor.get(resource, headers).body)
|
50
|
+
extract_page_contents(@first_page)
|
49
51
|
|
50
|
-
|
51
|
-
@next_page = next_page['uri'].gsub(@accessor.consumer.site, '')
|
52
|
+
@first_page
|
52
53
|
end
|
53
54
|
|
54
|
-
|
55
|
-
|
55
|
+
def fetch
|
56
|
+
return unless @next_page
|
56
57
|
|
57
|
-
|
58
|
-
|
58
|
+
page = JSON.parse(@accessor.get(@next_page, headers).body)
|
59
|
+
extract_page_contents(page)
|
60
|
+
end
|
59
61
|
|
60
|
-
|
61
|
-
|
62
|
+
def headers
|
63
|
+
@headers ||= {accept: 'application/vnd.deere.axiom.v3+json'}
|
64
|
+
end
|
62
65
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
@next_page = nil
|
66
|
+
def extract_page_contents(page)
|
67
|
+
add_items_from_page(page)
|
68
|
+
set_next_page(page)
|
67
69
|
end
|
68
|
-
end
|
69
70
|
|
70
|
-
|
71
|
-
|
71
|
+
def add_items_from_page(page)
|
72
|
+
@items += page['values'].map{|record| model.new(record, accessor) }
|
73
|
+
end
|
74
|
+
|
75
|
+
def set_next_page(page)
|
76
|
+
if next_page = page['links'].detect{|link| link['rel'] == 'nextPage'}
|
77
|
+
@next_page = uri_path(next_page['uri'])
|
78
|
+
else
|
79
|
+
@next_page = nil
|
80
|
+
end
|
81
|
+
end
|
72
82
|
end
|
73
83
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module MyJohnDeereApi::Request
|
4
|
+
class Fields < Collection
|
5
|
+
##
|
6
|
+
# The resource path for the first page in the collection
|
7
|
+
|
8
|
+
def resource
|
9
|
+
"/organizations/#{associations[:organization]}/fields"
|
10
|
+
end
|
11
|
+
|
12
|
+
##
|
13
|
+
# This is the class used to model the data
|
14
|
+
|
15
|
+
def model
|
16
|
+
MyJohnDeereApi::Model::Field
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/my_john_deere_api.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'support/helper'
|
2
|
+
|
3
|
+
class UriPathHelperSample
|
4
|
+
include JD::Helpers::UriPath
|
5
|
+
end
|
6
|
+
|
7
|
+
describe 'UriPath' do
|
8
|
+
let(:object) { UriPathHelperSample.new }
|
9
|
+
|
10
|
+
it 'extracts the path from the uri' do
|
11
|
+
path = object.send(:uri_path, 'https://example.com/turtles')
|
12
|
+
assert_equal '/turtles', path
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'removes leading /platform from the path' do
|
16
|
+
path = object.send(:uri_path, 'https://example.com/platform/turtles')
|
17
|
+
assert_equal '/turtles', path
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'preserves /platform in any other part of the path' do
|
21
|
+
path = object.send(:uri_path, 'https://example.com/platform/turtles/platform')
|
22
|
+
assert_equal '/turtles/platform', path
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'is a private method' do
|
26
|
+
assert_raises(NoMethodError) { object.uri_path('https://example.com/turtles')}
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'support/helper'
|
2
|
+
|
3
|
+
describe 'MyJohnDeereApi::Model::Field' do
|
4
|
+
let(:record) do
|
5
|
+
{
|
6
|
+
"@type"=>"Field",
|
7
|
+
"name"=>"Happy Field",
|
8
|
+
"archived"=>false,
|
9
|
+
"id"=>"123456",
|
10
|
+
"links"=>[
|
11
|
+
{"@type"=>"Link", "rel"=>"self", "uri"=>"https://sandboxapi.deere.com/platform/organizations/123456/fields/123456"},
|
12
|
+
{"@type"=>"Link", "rel"=>"clients", "uri"=>"https://sandboxapi.deere.com/platform/organizations/123456/fields/123456/clients"},
|
13
|
+
{"@type"=>"Link", "rel"=>"notes", "uri"=>"https://sandboxapi.deere.com/platform/organizations/123456/fields/123456/notes"},
|
14
|
+
]
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#initialize' do
|
19
|
+
def link_for label
|
20
|
+
record['links'].detect{|link| link['rel'] == label}['uri'].gsub('https://sandboxapi.deere.com/platform', '')
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'sets the attributes from the given record' do
|
24
|
+
field = JD::Model::Field.new(record)
|
25
|
+
|
26
|
+
assert_nil field.accessor
|
27
|
+
|
28
|
+
# basic attributes
|
29
|
+
assert_equal record['name'], field.name
|
30
|
+
assert_equal record['archived'], field.archived?
|
31
|
+
assert_equal record['id'], field.id
|
32
|
+
|
33
|
+
# links to other things
|
34
|
+
assert_kind_of Hash, field.links
|
35
|
+
|
36
|
+
['clients', 'notes'].each do |association|
|
37
|
+
assert_equal link_for(association), field.links[association]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'accepts an optional accessor' do
|
42
|
+
accessor = 'mock-accessor'
|
43
|
+
|
44
|
+
field = JD::Model::Field.new(record, accessor)
|
45
|
+
assert_equal accessor, field.accessor
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -28,9 +28,12 @@ describe 'MyJohnDeereApi::Model::Organization' do
|
|
28
28
|
}
|
29
29
|
end
|
30
30
|
|
31
|
-
|
31
|
+
let(:client) { JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET]) }
|
32
|
+
let(:accessor) { VCR.use_cassette('catalog') { client.send(:accessor) } }
|
33
|
+
|
34
|
+
describe '#initialize(record, accessor = nil)' do
|
32
35
|
def link_for label
|
33
|
-
record['links'].detect{|link| link['rel'] == label}['uri']
|
36
|
+
record['links'].detect{|link| link['rel'] == label}['uri'].gsub('https://sandboxapi.deere.com/platform', '')
|
34
37
|
end
|
35
38
|
|
36
39
|
it 'sets the attributes from the given record' do
|
@@ -41,6 +44,7 @@ describe 'MyJohnDeereApi::Model::Organization' do
|
|
41
44
|
assert_equal record['type'], organization.type
|
42
45
|
assert_equal record['member'], organization.member?
|
43
46
|
assert_equal record['id'], organization.id
|
47
|
+
assert_nil organization.accessor
|
44
48
|
|
45
49
|
# links to other things
|
46
50
|
assert_kind_of Hash, organization.links
|
@@ -49,5 +53,34 @@ describe 'MyJohnDeereApi::Model::Organization' do
|
|
49
53
|
assert_equal link_for(association), organization.links[association]
|
50
54
|
end
|
51
55
|
end
|
56
|
+
|
57
|
+
it 'accepts an optional accessor' do
|
58
|
+
accessor = 'mock-accessor'
|
59
|
+
|
60
|
+
organization = JD::Model::Organization.new(record, accessor)
|
61
|
+
assert_equal accessor, organization.accessor
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '#fields' do
|
66
|
+
it 'returns a collection of fields for this organization' do
|
67
|
+
accessor
|
68
|
+
organization = VCR.use_cassette('get_organizations') { client.organizations.first }
|
69
|
+
fields = VCR.use_cassette('get_fields') { organization.fields }
|
70
|
+
|
71
|
+
assert_kind_of Array, fields
|
72
|
+
|
73
|
+
fields.each do |field|
|
74
|
+
assert_kind_of JD::Model::Field, field
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'raises an exception if an accessor is not available' do
|
79
|
+
organization = JD::Model::Organization.new(record)
|
80
|
+
|
81
|
+
exception = assert_raises(JD::AccessTokenError) { organization.fields }
|
82
|
+
|
83
|
+
assert_includes exception.message, 'Access Token must be supplied'
|
84
|
+
end
|
52
85
|
end
|
53
86
|
end
|
@@ -9,6 +9,13 @@ describe 'MyJohnDeereApi::Request::Collection' do
|
|
9
9
|
collection = JD::Request::Collection.new(accessor)
|
10
10
|
assert_kind_of OAuth::AccessToken, collection.accessor
|
11
11
|
end
|
12
|
+
|
13
|
+
it 'accepts associations' do
|
14
|
+
collection = JD::Request::Collection.new(accessor, organization: '123')
|
15
|
+
|
16
|
+
assert_kind_of Hash, collection.associations
|
17
|
+
assert_equal '123', collection.associations[:organization]
|
18
|
+
end
|
12
19
|
end
|
13
20
|
|
14
21
|
it 'uses the Enumerable module' do
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'support/helper'
|
2
|
+
require 'yaml'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
describe 'MyJohnDeereApi::Request::Fields' do
|
6
|
+
let(:organization_id) do
|
7
|
+
contents = File.read('test/support/vcr/get_organizations.yml')
|
8
|
+
body = YAML.load(contents)['http_interactions'].first['response']['body']['string']
|
9
|
+
JSON.parse(body)['values'].first['id']
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:client) { JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET]) }
|
13
|
+
let(:accessor) { VCR.use_cassette('catalog') { client.send(:accessor) } }
|
14
|
+
let(:collection) { JD::Request::Fields.new(accessor, organization: organization_id) }
|
15
|
+
|
16
|
+
describe '#initialize(access_token)' do
|
17
|
+
it 'accepts an access token' do
|
18
|
+
assert_kind_of OAuth::AccessToken, collection.accessor
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'accepts associations' do
|
22
|
+
collection = JD::Request::Organizations.new(accessor, organization: '123')
|
23
|
+
|
24
|
+
assert_kind_of Hash, collection.associations
|
25
|
+
assert_equal '123', collection.associations[:organization]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#resource' do
|
30
|
+
it 'returns /organizations/{org_id}/fields' do
|
31
|
+
assert_equal "/organizations/#{organization_id}/fields", collection.resource
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#all' do
|
36
|
+
it 'returns all records' do
|
37
|
+
all = VCR.use_cassette('get_fields', record: :new_episodes) { collection.all }
|
38
|
+
|
39
|
+
assert_kind_of Array, all
|
40
|
+
assert_equal collection.count, all.size
|
41
|
+
|
42
|
+
all.each do |item|
|
43
|
+
assert_kind_of JD::Model::Field, item
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#count' do
|
49
|
+
let(:server_response) do
|
50
|
+
contents = File.read('test/support/vcr/get_fields.yml')
|
51
|
+
body = YAML.load(contents)['http_interactions'].first['response']['body']['string']
|
52
|
+
JSON.parse(body)
|
53
|
+
end
|
54
|
+
|
55
|
+
let(:server_count) { server_response['total'] }
|
56
|
+
|
57
|
+
it 'returns the total count of records in the collection' do
|
58
|
+
count = VCR.use_cassette('get_fields') { collection.count }
|
59
|
+
|
60
|
+
assert_equal server_count, count
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe 'results' do
|
65
|
+
let(:field_names) do
|
66
|
+
contents = File.read('test/support/vcr/get_fields.yml')
|
67
|
+
body = YAML.load(contents)['http_interactions'].first['response']['body']['string']
|
68
|
+
JSON.parse(body)['values'].map{|v| v['name']}
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'returns all records as a single enumerator' do
|
72
|
+
count = VCR.use_cassette('get_fields') { collection.count }
|
73
|
+
names = VCR.use_cassette('get_fields', record: :new_episodes) { collection.map{|item| item.name} }
|
74
|
+
|
75
|
+
assert_kind_of Array, names
|
76
|
+
assert_equal count, names.size
|
77
|
+
|
78
|
+
field_names.each do |expected_name|
|
79
|
+
assert_includes names, expected_name
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -21,12 +21,12 @@ describe 'MyJohnDeereApi::Request::Organizations' do
|
|
21
21
|
|
22
22
|
describe '#all' do
|
23
23
|
it 'returns all records' do
|
24
|
-
|
24
|
+
all = VCR.use_cassette('get_organizations', record: :new_episodes) { collection.all }
|
25
25
|
|
26
|
-
assert_kind_of Array,
|
27
|
-
assert_equal collection.count,
|
26
|
+
assert_kind_of Array, all
|
27
|
+
assert_equal collection.count, all.size
|
28
28
|
|
29
|
-
|
29
|
+
all.each do |item|
|
30
30
|
assert_kind_of JD::Model::Organization, item
|
31
31
|
end
|
32
32
|
end
|
@@ -49,23 +49,30 @@ describe 'MyJohnDeereApi::Request::Organizations' do
|
|
49
49
|
end
|
50
50
|
|
51
51
|
describe 'pagination' do
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
'Organization Elle'
|
58
|
-
]
|
52
|
+
let(:organization_names) do
|
53
|
+
contents = File.read('test/support/vcr/get_organizations.yml')
|
54
|
+
body = YAML.load(contents)['http_interactions'].first['response']['body']['string']
|
55
|
+
JSON.parse(body)['values'].map{|v| v['name']}
|
56
|
+
end
|
59
57
|
|
58
|
+
it 'returns all records as a single enumerator' do
|
60
59
|
count = VCR.use_cassette('get_organizations') { collection.count }
|
61
60
|
names = VCR.use_cassette('get_organizations', record: :new_episodes) { collection.map{|item| item.name} }
|
62
61
|
|
63
62
|
assert_kind_of Array, names
|
64
63
|
assert_equal count, names.size
|
65
64
|
|
66
|
-
|
65
|
+
organization_names.each do |expected_name|
|
67
66
|
assert_includes names, expected_name
|
68
67
|
end
|
69
68
|
end
|
69
|
+
|
70
|
+
it 'passes the accessor to all organizations' do
|
71
|
+
organizations = VCR.use_cassette('get_organizations', record: :new_episodes) { collection.all }
|
72
|
+
|
73
|
+
organizations.each do |organization|
|
74
|
+
assert_equal accessor, organization.accessor
|
75
|
+
end
|
76
|
+
end
|
70
77
|
end
|
71
78
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://sandboxapi.deere.com/platform/organizations/444563/fields
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/vnd.deere.axiom.v3+json
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
User-Agent:
|
15
|
+
- OAuth gem v0.5.4
|
16
|
+
Authorization:
|
17
|
+
- OAuth oauth_consumer_key="johndeere-wgmADngYCRmfpEbVgSyc709wnyRux5J7PAv8SE7B",
|
18
|
+
oauth_nonce="EuBNDwOFDYzuM5T50isfeWfjmFhOEKwnQBptgqAAQ", oauth_signature="5VXnWsRC0EAneTF7mQIthGJ2%2BVA%3D",
|
19
|
+
oauth_signature_method="HMAC-SHA1", oauth_timestamp="1578526360", oauth_token="47bbb9c9-41a8-4bec-8127-e3c5760af2f6",
|
20
|
+
oauth_version="1.0"
|
21
|
+
response:
|
22
|
+
status:
|
23
|
+
code: 200
|
24
|
+
message: OK
|
25
|
+
headers:
|
26
|
+
Date:
|
27
|
+
- Wed, 08 Jan 2020 23:32:41 GMT
|
28
|
+
Content-Type:
|
29
|
+
- application/vnd.deere.axiom.v3+json;charset=UTF-8
|
30
|
+
X-Deere-Handling-Server:
|
31
|
+
- ip-10-214-44-105
|
32
|
+
X-Frame-Options:
|
33
|
+
- SAMEORIGIN
|
34
|
+
X-Deere-Elapsed-Ms:
|
35
|
+
- '52'
|
36
|
+
Cache-Control:
|
37
|
+
- no-store
|
38
|
+
Content-Language:
|
39
|
+
- en-US
|
40
|
+
Transfer-Encoding:
|
41
|
+
- chunked
|
42
|
+
body:
|
43
|
+
encoding: ASCII-8BIT
|
44
|
+
string: '{"links":[{"rel":"self","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields"}],"total":2,"values":[{"@type":"Field","name":"Pivot
|
45
|
+
Fields","archived":false,"id":"11911a5a-ff81-40ef-b10d-0af9457fe474","links":[{"@type":"Link","rel":"self","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/11911a5a-ff81-40ef-b10d-0af9457fe474"},{"@type":"Link","rel":"clients","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/11911a5a-ff81-40ef-b10d-0af9457fe474/clients"},{"@type":"Link","rel":"farms","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/11911a5a-ff81-40ef-b10d-0af9457fe474/farms"},{"@type":"Link","rel":"owningOrganization","uri":"https://sandboxapi.deere.com/platform/organizations/444563"},{"@type":"Link","rel":"boundaries","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/11911a5a-ff81-40ef-b10d-0af9457fe474/boundaries"},{"@type":"Link","rel":"simplifiedBoundaries","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/11911a5a-ff81-40ef-b10d-0af9457fe474/boundaries?simple=true"},{"@type":"Link","rel":"addBoundary","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/11911a5a-ff81-40ef-b10d-0af9457fe474/boundaries"},{"@type":"Link","rel":"deleteField","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/11911a5a-ff81-40ef-b10d-0af9457fe474"},{"@type":"Link","rel":"editField","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/11911a5a-ff81-40ef-b10d-0af9457fe474"}]},{"@type":"Field","name":"Pond
|
46
|
+
1","archived":false,"id":"77db44f1-298d-45fd-9013-7184e25da776","links":[{"@type":"Link","rel":"self","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/77db44f1-298d-45fd-9013-7184e25da776"},{"@type":"Link","rel":"clients","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/77db44f1-298d-45fd-9013-7184e25da776/clients"},{"@type":"Link","rel":"farms","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/77db44f1-298d-45fd-9013-7184e25da776/farms"},{"@type":"Link","rel":"owningOrganization","uri":"https://sandboxapi.deere.com/platform/organizations/444563"},{"@type":"Link","rel":"boundaries","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/77db44f1-298d-45fd-9013-7184e25da776/boundaries"},{"@type":"Link","rel":"simplifiedBoundaries","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/77db44f1-298d-45fd-9013-7184e25da776/boundaries?simple=true"},{"@type":"Link","rel":"addBoundary","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/77db44f1-298d-45fd-9013-7184e25da776/boundaries"},{"@type":"Link","rel":"deleteField","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/77db44f1-298d-45fd-9013-7184e25da776"},{"@type":"Link","rel":"editField","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields/77db44f1-298d-45fd-9013-7184e25da776"}]}]}'
|
47
|
+
http_version:
|
48
|
+
recorded_at: Wed, 08 Jan 2020 23:32:42 GMT
|
49
|
+
recorded_with: VCR 5.0.0
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: my_john_deere_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jaime. Bellmyer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-01-
|
11
|
+
date: 2020-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: vcr
|
@@ -99,18 +99,27 @@ files:
|
|
99
99
|
- lib/my_john_deere_api/authorize.rb
|
100
100
|
- lib/my_john_deere_api/client.rb
|
101
101
|
- lib/my_john_deere_api/consumer.rb
|
102
|
+
- lib/my_john_deere_api/errors.rb
|
103
|
+
- lib/my_john_deere_api/helpers.rb
|
104
|
+
- lib/my_john_deere_api/helpers/uri_path.rb
|
102
105
|
- lib/my_john_deere_api/model.rb
|
106
|
+
- lib/my_john_deere_api/model/field.rb
|
103
107
|
- lib/my_john_deere_api/model/organization.rb
|
104
108
|
- lib/my_john_deere_api/request.rb
|
105
109
|
- lib/my_john_deere_api/request/collection.rb
|
110
|
+
- lib/my_john_deere_api/request/fields.rb
|
106
111
|
- lib/my_john_deere_api/request/organizations.rb
|
107
112
|
- lib/my_john_deere_api/version.rb
|
113
|
+
- test/lib/my_john_deere_api/helpers/test_uri_path.rb
|
114
|
+
- test/lib/my_john_deere_api/model/test_field.rb
|
108
115
|
- test/lib/my_john_deere_api/model/test_organization.rb
|
109
116
|
- test/lib/my_john_deere_api/request/test_collection.rb
|
117
|
+
- test/lib/my_john_deere_api/request/test_fields.rb
|
110
118
|
- test/lib/my_john_deere_api/request/test_organizations.rb
|
111
119
|
- test/lib/my_john_deere_api/test_authorize.rb
|
112
120
|
- test/lib/my_john_deere_api/test_client.rb
|
113
121
|
- test/lib/my_john_deere_api/test_consumer.rb
|
122
|
+
- test/lib/my_john_deere_api/test_helpers.rb
|
114
123
|
- test/lib/my_john_deere_api/test_model.rb
|
115
124
|
- test/lib/my_john_deere_api/test_request.rb
|
116
125
|
- test/lib/my_john_deere_api/test_version.rb
|
@@ -118,6 +127,7 @@ files:
|
|
118
127
|
- test/support/vcr/app_consumer.yml
|
119
128
|
- test/support/vcr/catalog.yml
|
120
129
|
- test/support/vcr/get_access_token.yml
|
130
|
+
- test/support/vcr/get_fields.yml
|
121
131
|
- test/support/vcr/get_organizations.yml
|
122
132
|
- test/support/vcr/get_request_token.yml
|
123
133
|
- test/test_my_john_deere_api.rb
|