rubydora 1.8.1 → 1.9.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.
@@ -1,6 +1,6 @@
1
1
  module Rubydora
2
2
  #
3
- # This model inject RELS-EXT-based helper methods
3
+ # This model inject RELS-EXT-based helper methods
4
4
  # for Fedora objects
5
5
  #
6
6
  module RelationshipsMixin
@@ -32,9 +32,9 @@ module Rubydora
32
32
  # generate accessor methods for each RELS_EXT property
33
33
  def self.included(base)
34
34
 
35
- # FIXME: ugly, but functional..
36
- RELS_EXT.each do |name, property|
37
- base.class_eval <<-RUBY
35
+ # FIXME: ugly, but functional..
36
+ RELS_EXT.each do |name, property|
37
+ base.class_eval <<-RUBY
38
38
  def #{name.to_s} args = {}
39
39
  relationships[:#{name}] = nil if args.delete(:refetch)
40
40
  relationships[:#{name}] ||= relationship('#{property}', args)
@@ -49,9 +49,9 @@ module Rubydora
49
49
  arr
50
50
  end
51
51
  RUBY
52
- end
52
+ end
53
53
  end
54
-
54
+
55
55
  ##
56
56
  # Provides an accessor to the `predicate` RELS-EXT relationship
57
57
  # Using ArrayWithCallback, will commit any changes to Fedora
@@ -60,14 +60,13 @@ module Rubydora
60
60
  # @param [Hash] args
61
61
  # @option args [Array] :values if nil, will query the resource index for related objects
62
62
  # @return [ArrayWithCallback<Rubydora::DigitalObject>] an array that will call the #relationship_changed callback when values are modified
63
- def relationship predicate, args = {}
63
+ def relationship(predicate, args = {})
64
64
  arr = ArrayWithCallback.new(args[:values] || repository.find_by_sparql_relationship(fqpid, predicate))
65
- arr.on_change << lambda { |arr, diff| relationship_changed(predicate, diff, arr) }
65
+ arr.on_change << lambda { |arr, diff| relationship_changed(predicate, diff, arr) }
66
66
 
67
67
  arr
68
68
  end
69
69
 
70
-
71
70
  ##
72
71
  # Given a predicate and a diff between before and after states
73
72
  # commit the appropriate changes to Fedora
@@ -77,24 +76,24 @@ module Rubydora
77
76
  # @option diff [Hash] :+ additions
78
77
  # @option diff [Hash] :- deletions
79
78
  # @param [Array] arr the current relationship state
80
- def relationship_changed predicate, diff, arr = []
79
+ def relationship_changed(predicate, diff, arr = [])
81
80
  diff[:+] ||= []
82
81
  diff[:-] ||= []
83
82
 
84
- diff[:+].each do |o|
83
+ diff[:+].each do |o|
85
84
  add_relationship(predicate, o)
86
- end
85
+ end
87
86
 
88
- diff[:-].each do |o|
87
+ diff[:-].each do |o|
89
88
  purge_relationship(predicate, o)
90
- end
89
+ end
91
90
  end
92
91
 
93
92
  # Add a relationship for this object
94
93
  # @param [String] predicate
95
94
  # @param [String, Rubydora::DigitalObject] object
96
95
  # @return self
97
- def add_relationship predicate, object
96
+ def add_relationship(predicate, object)
98
97
  obj_uri = (( object.fqpid if object.respond_to? :fqpid ) || ( object.uri if object.respond_to? :uri ) || (object.to_s if object.respond_to? :to_s?) || object )
99
98
  repository.add_relationship :subject => fqpid, :predicate => predicate, :object => obj_uri
100
99
  self
@@ -104,7 +103,7 @@ module Rubydora
104
103
  # @param [String] predicate
105
104
  # @param [String, Rubydora::DigitalObject] object
106
105
  # @return self
107
- def purge_relationship predicate, object
106
+ def purge_relationship(predicate, object)
108
107
  obj_uri = (( object.fqpid if object.respond_to? :fqpid ) || ( object.uri if object.respond_to? :uri ) || (object.to_s if object.respond_to? :to_s?) || object )
109
108
  repository.purge_relationship :subject => fqpid, :predicate => predicate, :object => obj_uri
110
109
  end
@@ -31,18 +31,18 @@ module Rubydora
31
31
  # @option options [String] :user
32
32
  # @option options [String] :password
33
33
  # @option options [Boolean] :validateChecksum
34
- def initialize options = {}, api = nil
34
+ def initialize(options = {}, api = nil)
35
35
  @config = options.symbolize_keys
36
36
  @api = api if api
37
37
  check_repository_version!
38
38
  end
39
39
 
40
40
  # {include:DigitalObject.find}
41
- def find pid
41
+ def find(pid)
42
42
  DigitalObject.find(pid, self)
43
43
  end
44
44
 
45
- def find_or_initialize pid
45
+ def find_or_initialize(pid)
46
46
  DigitalObject.find_or_initialize(pid, self)
47
47
  end
48
48
 
@@ -51,22 +51,22 @@ module Rubydora
51
51
  # @params [String] query
52
52
  # @params [Hash] options
53
53
  # @yield [DigitalObject] Yield a DigitalObject for each search result, skipping forbidden objects
54
- def search query, options = {}, &block
54
+ def search(query, options = {}, &block)
55
55
  return to_enum(:search, query, options).to_a unless block_given?
56
-
57
- sessionToken = nil
56
+
57
+ sessionToken = nil
58
58
  doc = nil
59
59
 
60
- begin
60
+ begin
61
61
  sessionOptions = {}
62
- sessionOptions[:sessionToken] = sessionToken unless sessionToken.nil? or sessionToken.blank?
62
+ sessionOptions[:sessionToken] = sessionToken unless sessionToken.nil? || sessionToken.blank?
63
63
 
64
64
  response = self.find_objects(options.merge(:query => query, :resultFormat => 'xml', :pid => true).merge(sessionOptions))
65
65
 
66
66
  doc = Nokogiri::XML(response)
67
67
  doc.xpath('//xmlns:objectFields/xmlns:pid', doc.namespaces).each do |pid|
68
68
  begin
69
- obj = self.find(pid.text);
69
+ obj = self.find(pid.text)
70
70
  rescue RestClient::Unauthorized
71
71
  next
72
72
  end
@@ -74,12 +74,12 @@ module Rubydora
74
74
  end
75
75
 
76
76
  sessionToken = doc.xpath('//xmlns:listSession/xmlns:token', doc.namespaces).text
77
- end until sessionToken.nil? or sessionToken.empty? or doc.xpath('//xmlns:resultList/xmlns:objectFields', doc.namespaces).empty?
77
+ end until sessionToken.nil? || sessionToken.empty? || doc.xpath('//xmlns:resultList/xmlns:objectFields', doc.namespaces).empty?
78
78
 
79
79
  end
80
80
 
81
81
  # {include:DigitalObject.create}
82
- def create pid, options = {}
82
+ def create(pid, options = {})
83
83
  DigitalObject.create(pid, options = {}, self)
84
84
  end
85
85
 
@@ -5,45 +5,41 @@ module Rubydora
5
5
  module ResourceIndex
6
6
  # Find new objects using a sparql query
7
7
  # @param [String] query SPARQL query
8
- # @param [Hash] options
8
+ # @param [Hash] options
9
9
  # @option options [String] :binding the SPARQL binding name to create new objects from
10
10
  # @return [Array<Rubydora::DigitalObject>]
11
- def find_by_sparql query, options = { :binding => 'pid' }
11
+ def find_by_sparql(query, options = { :binding => 'pid' })
12
12
  return to_enum(:find_by_sparql, query, options).to_a unless block_given?
13
13
 
14
- self.sparql(query).each do |x|
14
+ self.sparql(query).each do |x|
15
15
  obj = self.find(x[options[:binding]]) rescue nil
16
16
  yield obj if obj
17
17
  end
18
18
  end
19
19
 
20
20
  # Find new objects by their relationship to a subject
21
- # @param [String] subject Subject URI
21
+ # @param [String] subject Subject URI
22
22
  # @param [String] predicate Predicate URI
23
23
  # @return [Array<Rubydora::DigitalObject>]
24
- def find_by_sparql_relationship subject, predicate
24
+ def find_by_sparql_relationship(subject, predicate)
25
25
  find_by_sparql <<-RELSEXT
26
26
  SELECT ?pid FROM <#ri> WHERE {
27
- <#{subject}> <#{predicate}> ?pid
27
+ <#{subject}> <#{predicate}> ?pid
28
28
  }
29
29
  RELSEXT
30
30
  end
31
31
 
32
32
  # Run a raw SPARQL query and return a FasterCSV object
33
33
  # @param [String] query SPARQL query
34
- # @return [FasterCSV::Table]
35
- def sparql query
36
- if CSV.const_defined? :Reader
37
- FasterCSV.parse(self.risearch(query), :headers => true)
38
- else
39
- CSV.parse(self.risearch(query), :headers => true)
40
- end
34
+ # @return [CSV::Table]
35
+ def sparql(query)
36
+ CSV.parse(self.risearch(query), :headers => true)
41
37
  end
42
38
 
43
39
  # Run a raw query against the Fedora risearch resource index
44
40
  # @param [String] query
45
41
  # @param [Hash] options
46
- def risearch query, options = {}
42
+ def risearch(query, options = {})
47
43
  request_params = { :dt => 'on', :format => 'CSV', :lang => 'sparql', :limit => nil, :query => query, :type => 'tuples' }.merge(options)
48
44
 
49
45
  self.client['risearch'].post request_params
@@ -6,10 +6,10 @@ module Rubydora
6
6
 
7
7
  # Provide low-level access to the Fedora Commons REST API
8
8
  module RestApiClient
9
-
9
+
10
10
  include Rubydora::FedoraUrlHelpers
11
11
  extend ActiveSupport::Concern
12
- include ActiveSupport::Benchmarkable
12
+ include ActiveSupport::Benchmarkable
13
13
  extend Deprecation
14
14
 
15
15
  DEFAULT_CONTENT_TYPE = "application/octet-stream"
@@ -19,7 +19,6 @@ module Rubydora
19
19
  included do
20
20
  include ActiveSupport::Rescuable
21
21
 
22
-
23
22
  rescue_from RestClient::InternalServerError do |e|
24
23
  if Rubydora.logger
25
24
  Rubydora.logger.error e.response
@@ -49,13 +48,13 @@ module Rubydora
49
48
  # @option config [String] :password
50
49
  # @return [RestClient::Resource]
51
50
  #TODO trap for these errors specifically: RestClient::Request::Unauthorized, Errno::ECONNREFUSED
52
- def client config = {}
51
+ def client(config = {})
53
52
  client_config = self.config.merge(config)
54
53
  client_config.symbolize_keys!
55
- if config.empty? or @config_hash.nil? or (client_config.hash == @config_hash)
54
+ if config.empty? || @config_hash.nil? || (client_config.hash == @config_hash)
56
55
  @config_hash = client_config.hash
57
56
  url = client_config[:url]
58
- client_config.delete_if { |k,v| not VALID_CLIENT_OPTIONS.include?(k) }
57
+ client_config.delete_if { |k,v| !VALID_CLIENT_OPTIONS.include?(k) }
59
58
  client_config[:open_timeout] ||= client_config[:timeout]
60
59
  @client ||= RestClient::Resource.new(url, client_config)
61
60
  else
@@ -63,7 +62,7 @@ module Rubydora
63
62
  end
64
63
  end
65
64
 
66
- def describe options = {}
65
+ def describe(options = {})
67
66
  query_options = options.dup
68
67
  query_options[:xml] ||= 'true'
69
68
  client[describe_repository_url(query_options)].get
@@ -74,7 +73,7 @@ module Rubydora
74
73
  # {include:RestApiClient::API_DOCUMENTATION}
75
74
  # @param [Hash] options
76
75
  # @return [String]
77
- def next_pid options = {}
76
+ def next_pid(options = {})
78
77
  query_options = options.dup
79
78
  query_options[:format] ||= 'xml'
80
79
  client[next_pid_url(query_options)].post nil
@@ -85,15 +84,15 @@ module Rubydora
85
84
  # {include:RestApiClient::API_DOCUMENTATION}
86
85
  # @param [Hash] options
87
86
  # @return [String]
88
- def find_objects options = {}, &block_response
87
+ def find_objects(options = {}, &block_response)
89
88
  query_options = options.dup
90
- raise ArgumentError,"Cannot have both :terms and :query parameters" if query_options[:terms] and query_options[:query]
89
+ raise ArgumentError,"Cannot have both :terms and :query parameters" if query_options[:terms] && query_options[:query]
91
90
  query_options[:resultFormat] ||= 'xml'
92
91
 
93
92
  resource = client[find_objects_url(query_options)]
94
93
  if block_given?
95
94
  resource.query_options[:block_response] = block_response
96
- end
95
+ end
97
96
  return resource.get
98
97
  rescue Exception => exception
99
98
  rescue_with_handler(exception) || raise
@@ -103,20 +102,20 @@ module Rubydora
103
102
  # @param [Hash] options
104
103
  # @option options [String] :pid
105
104
  # @return [String]
106
- def object options = {}
105
+ def object(options = {})
107
106
  query_options = options.dup
108
107
  pid = query_options.delete(:pid)
109
108
  query_options[:format] ||= 'xml'
110
109
  client[object_url(pid, query_options)].get
111
110
  rescue Exception => exception
112
- rescue_with_handler(exception) || raise
111
+ rescue_with_handler(exception) || raise
113
112
  end
114
113
 
115
114
  # {include:RestApiClient::API_DOCUMENTATION}
116
115
  # @param [Hash] options
117
116
  # @option options [String] :pid
118
117
  # @return [String]
119
- def ingest options = {}
118
+ def ingest(options = {})
120
119
  query_options = options.dup
121
120
  pid = query_options.delete(:pid)
122
121
 
@@ -129,10 +128,10 @@ module Rubydora
129
128
  run_hook :after_ingest, :pid => assigned_pid, :file => file, :options => options
130
129
  assigned_pid
131
130
  rescue Exception => exception
132
- rescue_with_handler(exception) || raise
131
+ rescue_with_handler(exception) || raise
133
132
  end
134
133
 
135
- def mint_pid_and_ingest options = {}
134
+ def mint_pid_and_ingest(options = {})
136
135
  query_options = options.dup
137
136
  file = query_options.delete(:file)
138
137
 
@@ -140,74 +139,74 @@ module Rubydora
140
139
  run_hook :after_ingest, :pid => assigned_pid, :file => file, :options => options
141
140
  assigned_pid
142
141
  rescue Exception => exception
143
- rescue_with_handler(exception) || raise
142
+ rescue_with_handler(exception) || raise
144
143
  end
145
144
 
146
145
  # {include:RestApiClient::API_DOCUMENTATION}
147
146
  # @param [Hash] options
148
147
  # @option options [String] :pid
149
148
  # @return [String]
150
- def export options = {}
149
+ def export(options = {})
151
150
  query_options = options.dup
152
151
  pid = query_options.delete(:pid)
153
152
  raise ArgumentError, "Must have a pid" unless pid
154
153
  client[export_object_url(pid, query_options)].get
155
154
  rescue Exception => exception
156
- rescue_with_handler(exception) || raise
155
+ rescue_with_handler(exception) || raise
157
156
  end
158
157
 
159
158
  # {include:RestApiClient::API_DOCUMENTATION}
160
159
  # @param [Hash] options
161
160
  # @option options [String] :pid
162
161
  # @return [String]
163
- def modify_object options = {}
162
+ def modify_object(options = {})
164
163
  query_options = options.dup
165
164
  pid = query_options.delete(:pid)
166
165
  run_hook :before_modify_object, :pid => pid, :options => options
167
166
  ProfileParser.canonicalize_date_string(client[object_url(pid, query_options)].put(nil))
168
167
  rescue Exception => exception
169
- rescue_with_handler(exception) || raise
168
+ rescue_with_handler(exception) || raise
170
169
  end
171
170
 
172
171
  # {include:RestApiClient::API_DOCUMENTATION}
173
172
  # @param [Hash] options
174
173
  # @option options [String] :pid
175
174
  # @return [String]
176
- def purge_object options = {}
175
+ def purge_object(options = {})
177
176
  query_options = options.dup
178
177
  pid = query_options.delete(:pid)
179
178
  run_hook :before_purge_object, :pid => pid, :options => options
180
179
  client[object_url(pid, query_options)].delete
181
180
  rescue Exception => exception
182
- rescue_with_handler(exception) || raise
181
+ rescue_with_handler(exception) || raise
183
182
  end
184
183
 
185
184
  # {include:RestApiClient::API_DOCUMENTATION}
186
185
  # @param [Hash] options
187
186
  # @option options [String] :pid
188
187
  # @return [String]
189
- def object_versions options = {}
188
+ def object_versions(options = {})
190
189
  query_options = options.dup
191
190
  pid = query_options.delete(:pid)
192
191
  query_options[:format] ||= 'xml'
193
192
  raise ArgumentError, "Must have a pid" unless pid
194
193
  client[object_versions_url(pid, query_options)].get
195
194
  rescue Exception => exception
196
- rescue_with_handler(exception) || raise
195
+ rescue_with_handler(exception) || raise
197
196
  end
198
197
 
199
198
  # {include:RestApiClient::API_DOCUMENTATION}
200
199
  # @param [Hash] options
201
200
  # @option options [String] :pid
202
201
  # @return [String]
203
- def object_xml options = {}
202
+ def object_xml(options = {})
204
203
  query_options = options.dup
205
204
  pid = query_options.delete(:pid)
206
205
  raise ArgumentError, "Missing required parameter :pid" unless pid
207
206
  query_options[:format] ||= 'xml'
208
207
  client[object_xml_url(pid, query_options)].get
209
208
  rescue Exception => exception
210
- rescue_with_handler(exception) || raise
209
+ rescue_with_handler(exception) || raise
211
210
  end
212
211
 
213
212
  # {include:RestApiClient::API_DOCUMENTATION}
@@ -217,7 +216,7 @@ module Rubydora
217
216
  # @option options [String] :asOfDateTime
218
217
  # @option options [String] :validateChecksum
219
218
  # @return [String]
220
- def datastream options = {}
219
+ def datastream(options = {})
221
220
  query_options = options.dup
222
221
  pid = query_options.delete(:pid)
223
222
  dsid = query_options.delete(:dsid)
@@ -239,10 +238,10 @@ module Rubydora
239
238
  Rubydora.logger.error "Unauthorized at #{client.url}/#{datastream_url(pid, dsid, query_options)}" if Rubydora.logger
240
239
  raise e
241
240
  rescue Exception => exception
242
- rescue_with_handler(exception) || raise
241
+ rescue_with_handler(exception) || raise
243
242
  end
244
243
 
245
- def datastreams options = {}
244
+ def datastreams(options = {})
246
245
  unless options[:dsid].nil?
247
246
  #raise ArgumentError, "Missing required parameter :dsid" unless dsid
248
247
  Deprecation.warn(RestApiClient, "Calling Rubydora::RestApiClient#datastreams with a :dsid is deprecated, use #datastream instead")
@@ -262,7 +261,7 @@ module Rubydora
262
261
  Rubydora.logger.error "Unauthorized at #{client.url}/#{datastreams_url(pid, query_options)}" if Rubydora.logger
263
262
  raise e
264
263
  rescue Exception => exception
265
- rescue_with_handler(exception) || raise
264
+ rescue_with_handler(exception) || raise
266
265
 
267
266
  end
268
267
 
@@ -271,14 +270,14 @@ module Rubydora
271
270
  # @option options [String] :pid
272
271
  # @option options [String] :dsid
273
272
  # @return [String]
274
- def set_datastream_options options = {}
273
+ def set_datastream_options(options = {})
275
274
  query_options = options.dup
276
275
  pid = query_options.delete(:pid)
277
276
  dsid = query_options.delete(:dsid)
278
277
  run_hook :before_set_datastream_options, :pid => pid, :dsid => dsid, :options => options
279
278
  client[datastream_url(pid, dsid, query_options)].put nil
280
279
  rescue Exception => exception
281
- rescue_with_handler(exception) || raise
280
+ rescue_with_handler(exception) || raise
282
281
  end
283
282
 
284
283
  # {include:RestApiClient::API_DOCUMENTATION}
@@ -286,7 +285,7 @@ module Rubydora
286
285
  # @option options [String] :pid
287
286
  # @option options [String] :dsid
288
287
  # @return [String]
289
- def datastream_versions options = {}
288
+ def datastream_versions(options = {})
290
289
  query_options = options.dup
291
290
  pid = query_options.delete(:pid)
292
291
  dsid = query_options.delete(:dsid)
@@ -297,7 +296,7 @@ module Rubydora
297
296
  #404 Resource Not Found: No datastream history could be found. There is no datastream history for the digital object "changeme:1" with datastream ID of "descMetadata
298
297
  return nil
299
298
  rescue Exception => exception
300
- rescue_with_handler(exception) || raise
299
+ rescue_with_handler(exception) || raise
301
300
  end
302
301
 
303
302
  alias_method :datastream_history, :datastream_versions
@@ -307,7 +306,7 @@ module Rubydora
307
306
  # @option options [String] :pid
308
307
  # @option options [String] :dsid
309
308
  # @return [String]
310
- def datastream_dissemination options = {}, &block_response
309
+ def datastream_dissemination(options = {}, &block_response)
311
310
  query_options = options.dup
312
311
  pid = query_options.delete(:pid)
313
312
  dsid = query_options.delete(:dsid)
@@ -325,7 +324,7 @@ module Rubydora
325
324
  end
326
325
  val
327
326
  rescue Exception => exception
328
- rescue_with_handler(exception) || raise
327
+ rescue_with_handler(exception) || raise
329
328
  end
330
329
 
331
330
  # {include:RestApiClient::API_DOCUMENTATION}
@@ -333,7 +332,7 @@ module Rubydora
333
332
  # @option options [String] :pid
334
333
  # @option options [String] :dsid
335
334
  # @return [String]
336
- def add_datastream options = {}
335
+ def add_datastream(options = {})
337
336
  query_options = options.dup
338
337
  pid = query_options.delete(:pid)
339
338
  dsid = query_options.delete(:dsid)
@@ -344,7 +343,7 @@ module Rubydora
344
343
  file.rewind if file.respond_to?(:rewind)
345
344
  ProfileParser.parse_datastream_profile(client[datastream_url(pid, dsid, query_options)].post(str, :content_type => content_type.to_s, :multipart => true))
346
345
  rescue Exception => exception
347
- rescue_with_handler(exception) || raise
346
+ rescue_with_handler(exception) || raise
348
347
  end
349
348
 
350
349
  # {include:RestApiClient::API_DOCUMENTATION}
@@ -352,7 +351,7 @@ module Rubydora
352
351
  # @option options [String] :pid
353
352
  # @option options [String] :dsid
354
353
  # @return [String]
355
- def modify_datastream options = {}
354
+ def modify_datastream(options = {})
356
355
  query_options = options.dup
357
356
  pid = query_options.delete(:pid)
358
357
  dsid = query_options.delete(:dsid)
@@ -370,7 +369,7 @@ module Rubydora
370
369
  ProfileParser.parse_datastream_profile(client[datastream_url(pid, dsid, query_options)].put(str, rest_client_options))
371
370
 
372
371
  rescue Exception => exception
373
- rescue_with_handler(exception) || raise
372
+ rescue_with_handler(exception) || raise
374
373
  end
375
374
 
376
375
  # {include:RestApiClient::API_DOCUMENTATION}
@@ -378,54 +377,54 @@ module Rubydora
378
377
  # @option options [String] :pid
379
378
  # @option options [String] :dsid
380
379
  # @return [String]
381
- def purge_datastream options = {}
380
+ def purge_datastream(options = {})
382
381
  query_options = options.dup
383
382
  pid = query_options.delete(:pid)
384
383
  dsid = query_options.delete(:dsid)
385
384
  run_hook :before_purge_datastream, :pid => pid, :dsid => dsid
386
385
  client[datastream_url(pid, dsid, query_options)].delete
387
386
  rescue Exception => exception
388
- rescue_with_handler(exception) || raise
387
+ rescue_with_handler(exception) || raise
389
388
  end
390
389
 
391
390
  # {include:RestApiClient::API_DOCUMENTATION}
392
391
  # @param [Hash] options
393
392
  # @option options [String] :pid
394
393
  # @return [String]
395
- def relationships options = {}
394
+ def relationships(options = {})
396
395
  query_options = options.dup
397
396
  pid = query_options.delete(:pid) || query_options[:subject]
398
397
  raise ArgumentError, "Missing required parameter :pid" unless pid
399
398
  query_options[:format] ||= 'xml'
400
399
  client[object_relationship_url(pid, query_options)].get
401
400
  rescue Exception => exception
402
- rescue_with_handler(exception) || raise
401
+ rescue_with_handler(exception) || raise
403
402
  end
404
403
 
405
404
  # {include:RestApiClient::API_DOCUMENTATION}
406
405
  # @param [Hash] options
407
406
  # @option options [String] :pid
408
407
  # @return [String]
409
- def add_relationship options = {}
408
+ def add_relationship(options = {})
410
409
  query_options = options.dup
411
410
  pid = query_options.delete(:pid) || query_options[:subject]
412
411
  run_hook :before_add_relationship, :pid => pid, :options => options
413
412
  client[new_object_relationship_url(pid, query_options)].post nil
414
413
  rescue Exception => exception
415
- rescue_with_handler(exception) || raise
414
+ rescue_with_handler(exception) || raise
416
415
  end
417
416
 
418
417
  # {include:RestApiClient::API_DOCUMENTATION}
419
418
  # @param [Hash] options
420
419
  # @option options [String] :pid
421
420
  # @return [String]
422
- def purge_relationship options = {}
421
+ def purge_relationship(options = {})
423
422
  query_options = options.dup
424
423
  pid = query_options.delete(:pid) || query_options[:subject]
425
424
  run_hook :before_purge_relationship, :pid => pid, :options => options
426
425
  client[object_relationship_url(pid, query_options)].delete
427
426
  rescue Exception => exception
428
- rescue_with_handler(exception) || raise
427
+ rescue_with_handler(exception) || raise
429
428
  end
430
429
 
431
430
  # {include:RestApiClient::API_DOCUMENTATION}
@@ -434,12 +433,12 @@ module Rubydora
434
433
  # @option options [String] :sdef
435
434
  # @option options [String] :method
436
435
  # @return [String]
437
- def dissemination options = {}, &block_response
436
+ def dissemination(options = {}, &block_response)
438
437
  query_options = options.dup
439
438
  pid = query_options.delete(:pid)
440
439
  sdef = query_options.delete(:sdef)
441
440
  method = query_options.delete(:method)
442
- query_options[:format] ||= 'xml' unless pid and sdef and method
441
+ query_options[:format] ||= 'xml' unless pid && sdef && method
443
442
  if block_given?
444
443
  resource = safe_subresource(dissemination_url(pid,sdef,method,query_options), :block_response => block_response)
445
444
  else
@@ -448,10 +447,10 @@ module Rubydora
448
447
  resource.get
449
448
 
450
449
  rescue Exception => exception
451
- rescue_with_handler(exception) || raise
450
+ rescue_with_handler(exception) || raise
452
451
 
453
452
  end
454
-
453
+
455
454
  def safe_subresource(subresource, options=Hash.new)
456
455
  url = client.concat_urls(client.url, subresource)
457
456
  options = client.options.dup.merge! options