myjohndeere 0.0.10 → 0.0.11

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: 4f2acb9809590319db99a6cd147e160c3c870829
4
- data.tar.gz: 3e2f4b9095681162d90672de69167670ba7de5fe
3
+ metadata.gz: c1831ed7f9d5597914571ae4a25fd71625b9f99e
4
+ data.tar.gz: 4197edf1ab0d1da49e9701a068acd99c429f12a0
5
5
  SHA512:
6
- metadata.gz: aa8e8bcea9415a3f74b9af165ff07f876e916d99224238259bf48f369a577c8fe1fa223371d624e0e53202af34a688e09d58558706e9abd4a84ff59cd8998531
7
- data.tar.gz: 6b7d937b17ae5d91fc0062877a5658dd4d7083ba6c619ec1598c4e04a7f19b6292b55f753fd2f88c1c470bc23fc3a643d68cdd41de199c168731801c93a34a78
6
+ metadata.gz: 56e08d24d21555aa5172a6f375c7c94afc29270fbffa5365ec487fbb3dc49aa34ab919687f6d052986f5965166fa6795350c2c5fbae3d85401cc56e513da670f
7
+ data.tar.gz: a13f520f6b07bf56efc54be842b00008ae033c0d076e5ff589739be54f363688be1eada9f2d9a383bc2d75a4b1025cb2f4d0acdf27ef4a396d3c8c9426f6faed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- myjohndeere (0.0.10)
4
+ myjohndeere (0.0.11)
5
5
  oauth (>= 0.5.3)
6
6
 
7
7
  GEM
data/lib/myjohndeere.rb CHANGED
@@ -28,6 +28,7 @@ require 'myjohndeere/organization_owned_resource'
28
28
  require 'myjohndeere/api_support_item'
29
29
  require 'myjohndeere/contribution_activation'
30
30
  require 'myjohndeere/contribution_product'
31
+ require 'myjohndeere/file'
31
32
 
32
33
  # API Sub-classes
33
34
  require 'myjohndeere/map_legend_item'
@@ -0,0 +1,32 @@
1
+ module MyJohnDeere
2
+ class File < OrganizationOwnedResource
3
+ self.base_jd_resource = "files"
4
+ self.list_resource_path = "organizations/%{organization_id}/#{self.base_jd_resource}"
5
+ self.retrieve_resource_path = self.base_jd_resource
6
+ attributes_to_pull_from_json(:id, :name, :type, :createdTime, :modifiedTime, :nativeSize, :source, :transferPending, :visibleViaShare, :shared, :status, :archived, :new)
7
+
8
+ def initialize(json_object, access_token = nil)
9
+ super(json_object, access_token)
10
+ end
11
+
12
+ def upload_url()
13
+ "#{MyJohnDeere.configuration.endpoint}/#{self.class.build_resource_base_path!("#{self.class.retrieve_resource_path}/#{self.id}")}"
14
+ end
15
+
16
+ def self.create(access_token, organization_id, name: nil)
17
+ raise ArgumentError.new("You must pass a name for the file") if name.nil?
18
+
19
+ body = {
20
+ name: name
21
+ }
22
+
23
+ response = send_create(access_token, body, {organization_id: organization_id})
24
+
25
+ return nil if response.nil?
26
+ response.organization_id = organization_id
27
+ return response
28
+ end
29
+
30
+ # TODO: Support upload_file
31
+ end
32
+ end
@@ -37,10 +37,10 @@ module MyJohnDeere
37
37
  end
38
38
 
39
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)
40
+ raise ArgumentError.new("You must pass an existing file") if !::File.exists?(file_path)
41
41
  raise ArgumentError.new("You must pass a valid file_resource_id") if file_resource_id.nil?
42
42
 
43
- File.open(file_path, "rb:UTF-8") do |f|
43
+ ::File.open(file_path, "rb:UTF-8") do |f|
44
44
  body = f.read()
45
45
  response = access_token.execute_request(:put,
46
46
  "#{self.base_jd_resource}/#{file_resource_id}",
@@ -22,7 +22,9 @@ module MyJohnDeere
22
22
  self.class.json_attributes.each do |attrib|
23
23
  attrib = attrib.to_s
24
24
  val = json_data[attrib]
25
- if /(date)|(timestamp)/i.match(attrib) then
25
+ if val =~ /\A(true)|(false)\z/i then
26
+ val = /true/i.match(val) ? true : false
27
+ elsif /(date)|(timestamp)|(time\Z)/i.match(attrib) then
26
28
  # try to parse it
27
29
  val = Time.parse(val) rescue val
28
30
  end
@@ -1,3 +1,3 @@
1
1
  module MyJohnDeere
2
- VERSION = '0.0.10'
2
+ VERSION = '0.0.11'
3
3
  end
data/spec/fixtures.json CHANGED
@@ -1,4 +1,77 @@
1
1
  {
2
+ "files" : {
3
+ "links": [
4
+ {
5
+ "rel": "self",
6
+ "uri": "https://sandboxapi.deere.com/platform/files"
7
+ },
8
+ {
9
+ "rel": "nextPage",
10
+ "uri": "https://sandboxapi.deere.com/platform/files;start=10;count=10"
11
+ }
12
+ ],
13
+ "total": 1534,
14
+ "values": [
15
+ {
16
+ "links": [
17
+ {
18
+ "rel": "owningOrganization",
19
+ "uri": "https://sandboxapi.deere.com/platform/organizations/1234"
20
+ },
21
+ {
22
+ "rel": "partnerships",
23
+ "uri": "https://sandboxapi.deere.com/platform/files/466578633/partnerships"
24
+ },
25
+ {
26
+ "rel": "self",
27
+ "uri": "https://sandboxapi.deere.com/platform/files/466578633"
28
+ }
29
+ ],
30
+ "id": "577499742",
31
+ "name": "back40.zip",
32
+ "type": "SETUP",
33
+ "createdTime": "2013-01-04T14:08:51.104Z",
34
+ "modifiedTime": "2013-01-04T14:08:51.104Z",
35
+ "nativeSize": "72946",
36
+ "source": "JohnDoe",
37
+ "transferPending": "false",
38
+ "visibleViaShare": "owned",
39
+ "shared": "false",
40
+ "status": "UPLOAD_PENDING",
41
+ "archived": "false",
42
+ "new": "true"
43
+ }
44
+ ]
45
+ },
46
+ "file" : {
47
+ "links": [
48
+ {
49
+ "rel": "owningOrganization",
50
+ "uri": "https://sandboxapi.deere.com/platform/organizations/1234"
51
+ },
52
+ {
53
+ "rel": "partnerships",
54
+ "uri": "https://sandboxapi.deere.com/platform/files/466578633/partnerships"
55
+ },
56
+ {
57
+ "rel": "self",
58
+ "uri": "https://sandboxapi.deere.com/platform/files/577499742"
59
+ }
60
+ ],
61
+ "id": "577499742",
62
+ "name": "back40.zip",
63
+ "type": "SETUP",
64
+ "createdTime": "2015-02-03T10:42:24.282Z",
65
+ "modifiedTime": "2015-02-03T10:42:24.282Z",
66
+ "nativeSize": "72946",
67
+ "source": "JohnDoe",
68
+ "transferPending": "false",
69
+ "visibleViaShare": "owned",
70
+ "shared": "false",
71
+ "status": "UPLOAD_PENDING",
72
+ "archived": "false",
73
+ "new": "true"
74
+ },
2
75
  "contribution_products" : {
3
76
  "links": [
4
77
  {
@@ -23,7 +23,7 @@ class TestContributionProduct < Minitest::Test
23
23
  cp.current_status
24
24
  end
25
25
 
26
- def test_retrieve()
26
+ def test_list()
27
27
  stub_request(:get, /\/contributionProducts/).
28
28
  to_return(status: 200, body: API_FIXTURES.fetch("contribution_products").to_json)
29
29
 
data/test/test_file.rb ADDED
@@ -0,0 +1,71 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ class TestFile < Minitest::Test
4
+ FIXTURE = API_FIXTURES.fetch("file")
5
+ FIXTURE_FOR_LIST = API_FIXTURES.fetch("files")
6
+ FILE_ID = "577499742"
7
+ ORGANIZATION_ID = "1234"
8
+
9
+ def test_retrieve()
10
+ stub_request(:get, /\/files\/#{FILE_ID}/).
11
+ to_return(status: 200, body: FIXTURE.to_json)
12
+
13
+ file = MyJohnDeere::File.retrieve(default_access_token, FILE_ID)
14
+ assert_equal "577499742", file.id
15
+ assert_equal "back40.zip", file.name
16
+ assert_equal "SETUP", file.type
17
+ assert_equal Time.parse("2015-02-03T10:42:24.282Z"), file.created_time
18
+ assert_equal Time.parse("2015-02-03T10:42:24.282Z"), file.modified_time
19
+ assert_equal "72946", file.native_size
20
+ assert_equal "JohnDoe", file.source
21
+ assert_equal false, file.transfer_pending
22
+ assert_equal "owned", file.visible_via_share
23
+ assert_equal false, file.shared
24
+ assert_equal "UPLOAD_PENDING", file.status
25
+ assert_equal false, file.archived
26
+ assert_equal true, file.new
27
+ assert_equal ORGANIZATION_ID, file.organization_id
28
+ end
29
+
30
+ def test_list
31
+ stub_request(:get, /organizations\/#{ORGANIZATION_ID}\/files/).
32
+ to_return(status: 200, body: FIXTURE_FOR_LIST.to_json)
33
+
34
+ files = MyJohnDeere::File.list(default_access_token,
35
+ organization_id: ORGANIZATION_ID)
36
+
37
+ assert_equal 1, files.data.length
38
+ assert_equal MyJohnDeere::File, files.data[0].class
39
+ end
40
+
41
+ def test_created_argument_checking
42
+ assert_raises ArgumentError do
43
+ MyJohnDeere::File.create(default_access_token,
44
+ ORGANIZATION_ID,
45
+ name: nil
46
+ )
47
+ end
48
+ end
49
+
50
+ def test_upload_url
51
+ assert_equal "https://sandboxapi.deere.com/platform/files/1234", MyJohnDeere::File.new("id" => "1234").upload_url
52
+ end
53
+
54
+ def test_create
55
+ expected_name = "blah"
56
+ expected_body = {
57
+ name: expected_name
58
+ }.to_json
59
+ stub_request(:post, /organizations\/#{ORGANIZATION_ID}\/files/).
60
+ with(body: expected_body,
61
+ headers: {'Accept'=>'application/vnd.deere.axiom.v3+json', 'Content-Length'=>expected_body.length, 'Content-Type'=>'application/vnd.deere.axiom.v3+json'}).
62
+ to_return(status: 201, headers: {"Location"=>"https://sandboxapi.deere.com/platform/files/#{FILE_ID}"})
63
+ response = MyJohnDeere::File.create(default_access_token,
64
+ ORGANIZATION_ID,
65
+ name: expected_name
66
+ )
67
+ assert_equal FILE_ID, response.id
68
+ assert_equal ORGANIZATION_ID, response.organization_id
69
+ assert_equal "blah", response.name
70
+ end
71
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myjohndeere
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Susmarski
@@ -47,6 +47,7 @@ files:
47
47
  - lib/myjohndeere/core_ext/string.rb
48
48
  - lib/myjohndeere/errors.rb
49
49
  - lib/myjohndeere/field.rb
50
+ - lib/myjohndeere/file.rb
50
51
  - lib/myjohndeere/file_resource.rb
51
52
  - lib/myjohndeere/hash_utils.rb
52
53
  - lib/myjohndeere/json_attributes.rb
@@ -72,6 +73,7 @@ files:
72
73
  - test/test_contribution_activation.rb
73
74
  - test/test_contribution_product.rb
74
75
  - test/test_field.rb
76
+ - test/test_file.rb
75
77
  - test/test_file_resource.rb
76
78
  - test/test_helper.rb
77
79
  - test/test_list_object.rb
@@ -113,6 +115,7 @@ test_files:
113
115
  - test/test_contribution_activation.rb
114
116
  - test/test_contribution_product.rb
115
117
  - test/test_field.rb
118
+ - test/test_file.rb
116
119
  - test/test_file_resource.rb
117
120
  - test/test_helper.rb
118
121
  - test/test_list_object.rb