myjohndeere 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bf19bfd75f39dd56df3bf76013af1c23605b4de7
4
- data.tar.gz: a5912e8687c628ea0daceebc669fdc753bf13870
3
+ metadata.gz: 02a777b7787f90d5e37dc4e4b74953e95381d92d
4
+ data.tar.gz: 378a2721904af871dbd3a824cbd2bafa68589131
5
5
  SHA512:
6
- metadata.gz: 1dbc3b33287a73bb4521e5f339441edeef4ca0c157879bca0b6cd9c8be74134f98959411e907e8a7a3bc2f6f5cdf373769e621bdc9d880b6087fd3297d7b0e07
7
- data.tar.gz: 869ce4c2882bd818883675b752a6b7d903aa28ef34006589b84d11c893b7d34894e2bb6d3f1ac9925cef27ebffa1314783f54460852fbdaaefd90c69fed53138
6
+ metadata.gz: 53ab4da655908df5b9fba3fa956bda2485aa4e30be6a10a4793b7adf271e70449935607afa9ac82e4b8f0ce2ae70eb585e00de436e981d021f81fb144c52282b
7
+ data.tar.gz: ef1643bf28600368f5ba3abbf26411e45585813abbb0ad4ebf5284e29722c347f8caaf5a3bec309d0a79dd80c0d989c1622f31130e79d395bbc6fd2658fc7a66
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- myjohndeere (0.0.5)
4
+ myjohndeere (0.0.7)
5
5
  oauth (>= 0.5.3)
6
6
 
7
7
  GEM
@@ -33,6 +33,10 @@ module MyJohnDeere
33
33
  end
34
34
  end
35
35
 
36
+ # You're attempting to perform a request against a resource that is unsupported
37
+ class UnsupportedRequestError < MyJohnDeereError
38
+ end
39
+
36
40
  # Configuration error is raised when configuration hasn't been properly done
37
41
  class ConfigurationError < MyJohnDeereError
38
42
  end
@@ -1,5 +1,6 @@
1
1
  module MyJohnDeere
2
2
  class FileResource < OrganizationOwnedResource
3
+ self.supports_delete = true
3
4
  self.base_jd_resource = "fileResources"
4
5
  self.list_resource_path = "mapLayers/%{map_layer_id}/#{self.base_jd_resource}"
5
6
  self.retrieve_resource_path = self.base_jd_resource
@@ -36,6 +37,9 @@ module MyJohnDeere
36
37
  end
37
38
 
38
39
  def self.upload_file(access_token, file_resource_id, file_path)
40
+ raise ArgumentError.new("You must pass an existing file") if !File.exists?(file_path)
41
+ raise ArgumentError.new("You must pass a valid file_resource_id") if file_resource_id.nil?
42
+
39
43
  File.open(file_path, "rb:UTF-8") do |f|
40
44
  body = f.read()
41
45
  response = access_token.execute_request(:put,
@@ -1,5 +1,6 @@
1
1
  module MyJohnDeere
2
2
  class MapLayer < OrganizationOwnedResource
3
+ self.supports_delete = true
3
4
  self.base_jd_resource = "mapLayers"
4
5
  self.list_resource_path = "mapLayerSummaries/%{map_layer_summary_id}/#{self.base_jd_resource}"
5
6
  self.retrieve_resource_path = self.base_jd_resource
@@ -1,5 +1,6 @@
1
1
  module MyJohnDeere
2
2
  class MapLayerSummary < OrganizationOwnedResource
3
+ self.supports_delete = true
3
4
  self.base_jd_resource = "mapLayerSummaries"
4
5
  self.list_resource_path = "organizations/%{organization_id}/fields/%{field_id}/#{self.base_jd_resource}"
5
6
  self.retrieve_resource_path = self.base_jd_resource
@@ -18,7 +19,7 @@ module MyJohnDeere
18
19
  owning_organization_link_item(organization_id),
19
20
  {
20
21
  rel: "contributionDefinition",
21
- uri: "#{MyJohnDeere.configuration.endpoint}/#{MyJohnDeere.configuration.contribution_definition_id}"
22
+ uri: "#{MyJohnDeere.configuration.endpoint}/contributionDefinitions/#{MyJohnDeere.configuration.contribution_definition_id}"
22
23
  }
23
24
  ],
24
25
  metadata: metadata.map { |md| md.to_hash },
@@ -1,6 +1,7 @@
1
1
  module MyJohnDeere
2
2
  module RESTMethods
3
3
  module ClassMethods
4
+ attr_accessor :supports_delete
4
5
  attr_accessor :base_jd_resource
5
6
  attr_accessor :retrieve_resource_path
6
7
  attr_accessor :list_resource_path
@@ -37,6 +38,13 @@ module MyJohnDeere
37
38
  return new(response.data, access_token)
38
39
  end
39
40
 
41
+ def delete(access_token, id)
42
+ raise UnsupportedRequestError.new("Delete is not supported by this resource") if !self.supports_delete
43
+
44
+ response = access_token.execute_request(:delete, "#{self.base_jd_resource}/#{id}")
45
+ return response.code == 204
46
+ end
47
+
40
48
  def build_resource_base_path!(resource_path, options = {})
41
49
  expected_definitions = resource_path.scan(/%{(.+?)}/)
42
50
  return resource_path if expected_definitions.empty?
@@ -1,3 +1,3 @@
1
1
  module MyJohnDeere
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
data/spec/colored.png ADDED
Binary file
@@ -74,4 +74,15 @@ class TestFileResource < Minitest::Test
74
74
  assert_equal FILE_RESOURCE_ID, response.id
75
75
  assert_equal ORGANIZATION_ID, response.organization_id
76
76
  end
77
+
78
+ def test_upload_file
79
+ stub_request(:put, /fileResources\/#{FILE_RESOURCE_ID}/).
80
+ with(headers: {'Content-Length'=>'4407', 'Content-Type'=>'application/octet-stream'}).
81
+ to_return(status: 204)
82
+
83
+ success = MyJohnDeere::FileResource.upload_file(default_access_token, FILE_RESOURCE_ID,
84
+ "#{PROJECT_ROOT}/spec/colored.png")
85
+
86
+ assert success
87
+ end
77
88
  end
@@ -33,7 +33,16 @@ class TestMapLayerSummary < Minitest::Test
33
33
  end
34
34
 
35
35
  def test_create
36
- expected_body = "{\"title\":\"Test number 2\",\"text\":\"Hello from farm lens again\",\"links\":[{\"rel\":\"owningOrganization\",\"uri\":\"https://sandboxapi.deere.com/platform/organizations/1234\"},{\"rel\":\"contributionDefinition\",\"uri\":\"https://sandboxapi.deere.com/platform/foobar\"}],\"metadata\":[{\"key\":\"key\",\"value\":\"val\"}],\"dateCreated\":\"2016-01-02T16:14:23.421Z\"}"
36
+ expected_body = {"title"=>"Test number 2",
37
+ "text"=>"Hello from farm lens again",
38
+ "links"=>
39
+ [{"rel"=>"owningOrganization",
40
+ "uri"=>"https://sandboxapi.deere.com/platform/organizations/1234"},
41
+ {"rel"=>"contributionDefinition",
42
+ "uri"=>
43
+ "https://sandboxapi.deere.com/platform/contributionDefinitions/foobar"}],
44
+ "metadata"=>[{"key"=>"key", "value"=>"val"}],
45
+ "dateCreated"=>"2016-01-02T16:14:23.421Z"}.to_json
37
46
  stub_request(:post, /\/organizations\/#{ORGANIZATION_ID}\/fields\/#{FIELD_ID}\/mapLayerSummaries/).
38
47
  with(body: expected_body,
39
48
  headers: {'Accept'=>'application/vnd.deere.axiom.v3+json', 'Content-Length'=>expected_body.length, 'Content-Type'=>'application/vnd.deere.axiom.v3+json'}).
@@ -14,6 +14,17 @@ class TestRestMethods < Minitest::Test
14
14
  end
15
15
  end
16
16
 
17
+ def test_delete
18
+ stub_request(:delete, /mapLayerSummaries/).
19
+ to_return(status: 204)
20
+
21
+ assert MyJohnDeere::MapLayerSummary.delete(default_access_token, "foobar")
22
+
23
+ assert_raises MyJohnDeere::UnsupportedRequestError do
24
+ MyJohnDeere::Organization.delete(default_access_token, "foobar")
25
+ end
26
+ end
27
+
17
28
  def test_list_with_etag
18
29
  stub_request(:get, /organizations/).
19
30
  with(headers: {MyJohnDeere::ETAG_HEADER_KEY => ""}).
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myjohndeere
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Susmarski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-19 00:00:00.000000000 Z
11
+ date: 2017-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth
@@ -62,6 +62,7 @@ files:
62
62
  - lib/myjohndeere/util.rb
63
63
  - lib/myjohndeere/version.rb
64
64
  - myjohndeere.gemspec
65
+ - spec/colored.png
65
66
  - spec/fixtures.json
66
67
  - test/api_fixtures.rb
67
68
  - test/test_access_token.rb