my_john_deere_api 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/my_john_deere_api/client.rb +15 -0
- data/lib/my_john_deere_api/version.rb +1 -1
- data/test/lib/test_client.rb +35 -1
- data/test/support/vcr/get_organizations.yml +49 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dbad97d98f7f86489ff758e97b1f8e596db52adef1a0948618e073cacd393f6d
|
4
|
+
data.tar.gz: 268f2309b43dc543268d5ad97151b4a4f6fb4e84ba8a7a6504e4f35a78177616
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02cdd40ea10657f8a4102c185fce3114da462fb68e52688dfb219ff4dbf36ab9a621f2e6be6bd1713312097a8ebeb7466dd3976a019a803b1300e51a5b1a7bfa
|
7
|
+
data.tar.gz: 13c524f8779b12210e40fcf632ecb171e088a942b30215a1d049559bdacf7bd4e3211c26d0ea9fa29fecacca5f948cae4703dc423803e63d80e21198b19fc236
|
@@ -30,6 +30,17 @@ class MyJohnDeereApi::Client
|
|
30
30
|
@environment = options[:environment]
|
31
31
|
end
|
32
32
|
|
33
|
+
##
|
34
|
+
# generic user-specific GET request method that returns JSON
|
35
|
+
|
36
|
+
def get resource
|
37
|
+
resource = resource.to_s
|
38
|
+
resource = "/#{resource}" unless resource =~ /^\//
|
39
|
+
response = accessor.get(resource, headers)
|
40
|
+
|
41
|
+
JSON.parse(response.body)
|
42
|
+
end
|
43
|
+
|
33
44
|
private
|
34
45
|
|
35
46
|
##
|
@@ -48,4 +59,8 @@ class MyJohnDeereApi::Client
|
|
48
59
|
return @accessor if defined?(@accessor)
|
49
60
|
@accessor = OAuth::AccessToken.new(consumer.user_get, access_token, access_secret)
|
50
61
|
end
|
62
|
+
|
63
|
+
def headers
|
64
|
+
@headers ||= {accept: 'application/vnd.deere.axiom.v3+json'}
|
65
|
+
end
|
51
66
|
end
|
data/test/lib/test_client.rb
CHANGED
@@ -34,6 +34,41 @@ describe 'MyJohnDeereApi::Client' do
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
describe '#get' do
|
38
|
+
it 'returns the response as a Hash' do
|
39
|
+
client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
|
40
|
+
VCR.use_cassette('catalog') { client.send(:accessor) }
|
41
|
+
response = VCR.use_cassette('get_organizations') { client.get('/organizations') }
|
42
|
+
|
43
|
+
assert_kind_of Hash, response
|
44
|
+
assert_equal 2, response['total']
|
45
|
+
assert response['values'].all?{|value| value['@type'] == 'Organization'}
|
46
|
+
assert response['values'].all?{|value| value.has_key?('links')}
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'prepends the leading slash if needed' do
|
50
|
+
client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
|
51
|
+
VCR.use_cassette('catalog') { client.send(:accessor) }
|
52
|
+
response = VCR.use_cassette('get_organizations') { client.get('organizations') }
|
53
|
+
|
54
|
+
assert_kind_of Hash, response
|
55
|
+
assert_equal 2, response['total']
|
56
|
+
assert response['values'].all?{|value| value['@type'] == 'Organization'}
|
57
|
+
assert response['values'].all?{|value| value.has_key?('links')}
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'allows symbols for simple resources' do
|
61
|
+
client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
|
62
|
+
VCR.use_cassette('catalog') { client.send(:accessor) }
|
63
|
+
response = VCR.use_cassette('get_organizations') { client.get(:organizations) }
|
64
|
+
|
65
|
+
assert_kind_of Hash, response
|
66
|
+
assert_equal 2, response['total']
|
67
|
+
assert response['values'].all?{|value| value['@type'] == 'Organization'}
|
68
|
+
assert response['values'].all?{|value| value.has_key?('links')}
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
37
72
|
describe '#consumer' do
|
38
73
|
it 'receives the api key/secret and environment of the client' do
|
39
74
|
environment = :sandbox
|
@@ -51,7 +86,6 @@ describe 'MyJohnDeereApi::Client' do
|
|
51
86
|
describe '#accessor' do
|
52
87
|
it 'returns an object that can make user-specific requests' do
|
53
88
|
client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
|
54
|
-
consumer = client.send(:consumer)
|
55
89
|
accessor = VCR.use_cassette('catalog') { client.send :accessor }
|
56
90
|
|
57
91
|
assert_kind_of OAuth::AccessToken, accessor
|
@@ -0,0 +1,49 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://sandboxapi.deere.com/platform/organizations
|
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="kndkJ0Y5SmSiWKPLw7e1peNgotFj5t2hHkpX89mmQWk", oauth_signature="uSxP9P%2BZcpG7dZwZhOQM7noYcTI%3D",
|
19
|
+
oauth_signature_method="HMAC-SHA1", oauth_timestamp="1578435671", 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
|
+
- Tue, 07 Jan 2020 22:21:12 GMT
|
28
|
+
Content-Type:
|
29
|
+
- application/vnd.deere.axiom.v3+json;charset=UTF-8
|
30
|
+
X-Deere-Handling-Server:
|
31
|
+
- ip-10-214-44-238
|
32
|
+
X-Frame-Options:
|
33
|
+
- SAMEORIGIN
|
34
|
+
X-Deere-Elapsed-Ms:
|
35
|
+
- '115'
|
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"}],"total":2,"values":[{"@type":"Organization","name":"Century
|
45
|
+
Farms","type":"customer","member":true,"id":"444563","links":[{"@type":"Link","rel":"self","uri":"https://sandboxapi.deere.com/platform/organizations/444563"},{"@type":"Link","rel":"machines","uri":"https://sandboxapi.deere.com/platform/organizations/444563/machines"},{"@type":"Link","rel":"wdtCapableMachines","uri":"https://sandboxapi.deere.com/platform/organizations/444563/machines?capability=wdt"},{"@type":"Link","rel":"files","uri":"https://sandboxapi.deere.com/platform/organizations/444563/files"},{"@type":"Link","rel":"transferableFiles","uri":"https://sandboxapi.deere.com/platform/organizations/444563/files?transferable=true"},{"@type":"Link","rel":"uploadFile","uri":"https://sandboxapi.deere.com/platform/organizations/444563/files"},{"@type":"Link","rel":"sendFileToMachine","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fileTransfers"},{"@type":"Link","rel":"addMachine","uri":"https://sandboxapi.deere.com/platform/organizations/444563/machines"},{"@type":"Link","rel":"addField","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields"},{"@type":"Link","rel":"assets","uri":"https://sandboxapi.deere.com/platform/organizations/444563/assets"},{"@type":"Link","rel":"fields","uri":"https://sandboxapi.deere.com/platform/organizations/444563/fields"},{"@type":"Link","rel":"farms","uri":"https://sandboxapi.deere.com/platform/organizations/444563/farms"},{"@type":"Link","rel":"boundaries","uri":"https://sandboxapi.deere.com/platform/organizations/444563/boundaries"},{"@type":"Link","rel":"clients","uri":"https://sandboxapi.deere.com/platform/organizations/444563/clients"},{"@type":"Link","rel":"controllers","uri":"https://sandboxapi.deere.com/platform/organizations/444563/orgController"}]},{"@type":"Organization","name":"JJ''s
|
46
|
+
Farm","type":"customer","member":true,"id":"443911","links":[{"@type":"Link","rel":"self","uri":"https://sandboxapi.deere.com/platform/organizations/443911"},{"@type":"Link","rel":"machines","uri":"https://sandboxapi.deere.com/platform/organizations/443911/machines"},{"@type":"Link","rel":"wdtCapableMachines","uri":"https://sandboxapi.deere.com/platform/organizations/443911/machines?capability=wdt"},{"@type":"Link","rel":"files","uri":"https://sandboxapi.deere.com/platform/organizations/443911/files"},{"@type":"Link","rel":"transferableFiles","uri":"https://sandboxapi.deere.com/platform/organizations/443911/files?transferable=true"},{"@type":"Link","rel":"uploadFile","uri":"https://sandboxapi.deere.com/platform/organizations/443911/files"},{"@type":"Link","rel":"sendFileToMachine","uri":"https://sandboxapi.deere.com/platform/organizations/443911/fileTransfers"},{"@type":"Link","rel":"addMachine","uri":"https://sandboxapi.deere.com/platform/organizations/443911/machines"},{"@type":"Link","rel":"addField","uri":"https://sandboxapi.deere.com/platform/organizations/443911/fields"},{"@type":"Link","rel":"assets","uri":"https://sandboxapi.deere.com/platform/organizations/443911/assets"},{"@type":"Link","rel":"fields","uri":"https://sandboxapi.deere.com/platform/organizations/443911/fields"},{"@type":"Link","rel":"farms","uri":"https://sandboxapi.deere.com/platform/organizations/443911/farms"},{"@type":"Link","rel":"boundaries","uri":"https://sandboxapi.deere.com/platform/organizations/443911/boundaries"},{"@type":"Link","rel":"clients","uri":"https://sandboxapi.deere.com/platform/organizations/443911/clients"},{"@type":"Link","rel":"controllers","uri":"https://sandboxapi.deere.com/platform/organizations/443911/orgController"}]}]}'
|
47
|
+
http_version:
|
48
|
+
recorded_at: Tue, 07 Jan 2020 22:21:13 GMT
|
49
|
+
recorded_with: VCR 5.0.0
|
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: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jaime. Bellmyer
|
@@ -108,6 +108,7 @@ files:
|
|
108
108
|
- test/support/vcr/app_consumer.yml
|
109
109
|
- test/support/vcr/catalog.yml
|
110
110
|
- test/support/vcr/get_access_token.yml
|
111
|
+
- test/support/vcr/get_organizations.yml
|
111
112
|
- test/support/vcr/get_request_token.yml
|
112
113
|
- test/test_my_john_deere_api.rb
|
113
114
|
homepage: https://github.com/Intellifarm/my_john_deere_api
|