rubydora 1.8.1 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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