dor-services-client 1.4.0 → 1.5.0

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
  SHA256:
3
- metadata.gz: 3ff3cb509e134b7c38ec2797f7b83185c8ac33958f026eca5498777c4f30ac59
4
- data.tar.gz: 1fcbce05a46949d7f2c13a64fc2b879b729d99b3822259a816073fe597b660fd
3
+ metadata.gz: dd0e89756c5a456653886f4a0e502a08b71e2dfec3d898e698d02299a96768d4
4
+ data.tar.gz: b27e3fde33c638dc7b4ed56ec629c3fd585bef42992391257b885fb5bd18d61c
5
5
  SHA512:
6
- metadata.gz: efad6b8d2ef0288ff2653b7438801de8c7a9626ef60ef1dae100ae5e49ccec1718e02cada9c39750abafaa770ea3b789817b0d2d36d8e0908645ee385e715e7f
7
- data.tar.gz: 9d36e415756c6642d7d9effbf1c7b75055aea6ce1ae7795f65e8ea04dd58d9ff644799fddcb5ffd6f0827c6e9c3d25733b46db1b5ead0b3f6ced62e43e0eb903
6
+ metadata.gz: 20819d9efbff8652b0539387d198f17e1f889426d06863bd753cb4411c8bd36e64e39e52f7bb5ee589e72d1cfe86779e52bf981fad598c1521e2ea9a0db65e34
7
+ data.tar.gz: 83158ffad56953cd19615b2e2f4e5d2dbc5599634755a09ae543d005a15c6b4f4910bc0ea3ebf07bd14ab8746e21e36b61e5569f65ad9923ecd20115beefa096
@@ -40,6 +40,39 @@ module Dor
40
40
  Moab::SignatureCatalog.parse resp.body
41
41
  end
42
42
 
43
+ # Retrieves file difference manifest for contentMetadata from SDR
44
+ #
45
+ # @param [String] current_content The contentMetadata xml
46
+ # @param [String] subset ('all') The keyword for file attributes 'shelve', 'preserve', 'publish'.
47
+ # @param [Integer, NilClass] version (nil)
48
+ # @return [Moab::FileInventoryDifference] the differences for the given content and subset (i.e.: cm_inv_diff manifest)
49
+ def content_diff(current_content:, subset: 'all', version: nil)
50
+ raise ArgumentError, "Invalid subset value: #{subset}" unless %w[all shelve preserve publish].include?(subset)
51
+
52
+ query_string = { subset: subset }
53
+ query_string[:version] = version.to_s unless version.nil?
54
+ query_string = URI.encode_www_form(query_string)
55
+
56
+ resp = connection.post do |req|
57
+ req.url "#{base_path}/cm-inv-diff?#{query_string}"
58
+ req.headers['Content-Type'] = 'application/xml'
59
+ req.body = current_content
60
+ end
61
+ Moab::FileInventoryDifference.parse(resp.body)
62
+ end
63
+
64
+ # @param [String] datastream The identifier of the metadata datastream
65
+ # @return [String] The datastream contents from the previous version of the digital object (fetched from SDR storage)
66
+ def metadata(datastream:)
67
+ resp = connection.get do |req|
68
+ req.url "#{base_path}/metadata/#{datastream}.xml"
69
+ end
70
+ return resp.body if resp.success?
71
+ return if resp.status == 404
72
+
73
+ raise UnexpectedResponse, "#{resp.reason_phrase}: #{resp.status} (#{resp.body}) for #{object_identifier}"
74
+ end
75
+
43
76
  private
44
77
 
45
78
  attr_reader :object_identifier
@@ -3,7 +3,7 @@
3
3
  module Dor
4
4
  module Services
5
5
  class Client
6
- VERSION = '1.4.0'
6
+ VERSION = '1.5.0'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dor-services-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2019-02-04 00:00:00.000000000 Z
12
+ date: 2019-02-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -207,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
207
  version: '0'
208
208
  requirements: []
209
209
  rubyforge_project:
210
- rubygems_version: 2.7.8
210
+ rubygems_version: 2.7.6
211
211
  signing_key:
212
212
  specification_version: 4
213
213
  summary: A client for dor-services-app