rubydora 0.4.0pre1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0pre1
1
+ 0.4.0
@@ -0,0 +1,114 @@
1
+ module Rubydora
2
+ module FedoraUrlHelpers
3
+ # Fedora API documentation available at {https://wiki.duraspace.org/display/FCR30/REST+API}
4
+ API_DOCUMENTATION = 'https://wiki.duraspace.org/display/FCR30/REST+API'
5
+
6
+ # Generate a REST API compatible URI
7
+ # @param [String] base base URI
8
+ # @param [Hash] options to convert to URL parameters
9
+ # @return [String] URI
10
+ def url_for base, options = nil
11
+ return base unless options.is_a? Hash
12
+ "#{base}" + (("?#{options.map { |key, value| "#{CGI::escape(key.to_s)}=#{CGI::escape(value.to_s)}"}.join("&") }" if options and not options.empty?) || '')
13
+ end
14
+
15
+ # Generate a base object REST API endpoint URI
16
+ # @param [String] pid
17
+ # @param [Hash] options to convert to URL parameters
18
+ # @return [String] URI
19
+ def object_url pid, options = nil
20
+ url_for("objects" + (("/#{CGI::escape(pid.to_s.gsub('info:fedora/', ''))}" if pid) || ''), options)
21
+ end
22
+
23
+ # @param [Hash] options to convert to URL parameters
24
+ # @return [String] URI
25
+ def next_pid_url options = nil
26
+ url_for("objects/nextPID", options)
27
+ end
28
+
29
+ # @param [Hash] options to convert to URL parameters
30
+ # @return [String] URI
31
+ def find_objects_url options = nil
32
+ url_for("objects", options)
33
+ end
34
+
35
+ # Generate a base object dissemination REST API endpoint URI
36
+ # @param [String] pid
37
+ # @param [String] sdef
38
+ # @param [String] method
39
+ # @param [Hash] options to convert to URL parameters
40
+ # @return [String] URI
41
+ def dissemination_url pid, sdef = nil, method = nil, options = nil
42
+ raise "" unless pid
43
+ url_for(object_url(pid) + "/methods" + (("/#{CGI::escape(sdef)}" if sdef) || '') + (("/#{CGI::escape(method)}" if method) || ''), options)
44
+ end
45
+
46
+ # Generate a base datastream REST API endpoint URI
47
+ # @param [String] pid
48
+ # @param [String] dsid
49
+ # @param [Hash] options to convert to URL parameters
50
+ # @return [String] URI
51
+ def datastream_url pid, dsid = nil, options = nil
52
+ raise "" unless pid
53
+ url_for(object_url(pid) + "/datastreams" + (("/#{CGI::escape(dsid)}" if dsid) || ''), options)
54
+ end
55
+
56
+ # @param [String] pid
57
+ # @param [String] dsid
58
+ # @param [Hash] options to convert to URL parameters
59
+ # @return [String] URI
60
+ def datastream_content_url pid, dsid = nil, options = nil
61
+ url_for(datastream_url(pid, dsid) + "/content", options)
62
+ end
63
+
64
+ # @param [String] pid
65
+ # @param [String] dsid
66
+ # @param [Hash] options to convert to URL parameters
67
+ # @return [String] URI
68
+ def datastream_history_url pid, dsid = nil, options = nil
69
+ url_for(datastream_url(pid, dsid) + "/history", options)
70
+ end
71
+
72
+ # @param [String] pid
73
+ # @param [Hash] options to convert to URL parameters
74
+ # @return [String] URI
75
+ def validate_object_url pid, options = nil
76
+ url_for(object_url(pid) + "/validate", options)
77
+ end
78
+
79
+ # @param [String] pid
80
+ # @param [Hash] options to convert to URL parameters
81
+ # @return [String] URI
82
+ def export_object_url pid, options = nil
83
+ url_for(object_url(pid) + "/export", options)
84
+ end
85
+
86
+ # @param [String] pid
87
+ # @param [Hash] options to convert to URL parameters
88
+ # @return [String] URI
89
+ def object_versions_url pid, options = nil
90
+ url_for(object_url(pid) + "/versions", options)
91
+ end
92
+
93
+ # @param [String] pid
94
+ # @param [Hash] options to convert to URL parameters
95
+ # @return [String] URI
96
+ def object_xml_url pid, options = nil
97
+ url_for(object_url(pid) + "/objectXML", options)
98
+ end
99
+
100
+ # @param [String] pid
101
+ # @param [Hash] options to convert to URL parameters
102
+ # @return [String] URI
103
+ def object_relationship_url pid, options = nil
104
+ url_for(object_url(pid) + "/relationships", options)
105
+ end
106
+
107
+ # @param [String] pid
108
+ # @param [Hash] options to convert to URL parameters
109
+ # @return [String] URI
110
+ def new_object_relationship_url pid, options = nil
111
+ url_for(object_relationship_url(pid) + "/new", options)
112
+ end
113
+ end
114
+ end
@@ -2,8 +2,9 @@ module Rubydora
2
2
 
3
3
  # Provide low-level access to the Fedora Commons REST API
4
4
  module RestApiClient
5
- # Fedora API documentation available at {https://wiki.duraspace.org/display/FCR30/REST+API}
6
- API_DOCUMENTATION = 'https://wiki.duraspace.org/display/FCR30/REST+API'
5
+
6
+ include Rubydora::FedoraUrlHelpers
7
+
7
8
  VALID_CLIENT_OPTIONS = [:user, :password, :timeout, :open_timeout, :ssl_client_cert, :ssl_client_key]
8
9
  # Create an authorized HTTP client for the Fedora REST API
9
10
  # @param [Hash] config
@@ -30,9 +31,10 @@ module Rubydora
30
31
  def next_pid options = {}
31
32
  options[:format] ||= 'xml'
32
33
  begin
33
- return client[url_for(object_url() + "/nextPID", options)].post nil
34
+ return client[next_pid_url(options)].post nil
34
35
  rescue => e
35
36
  logger.error e.response
37
+ logger.flush if logger.respond_to? :flush
36
38
  raise "Error getting nextPID. See logger for details"
37
39
  end
38
40
  end
@@ -45,13 +47,14 @@ module Rubydora
45
47
  options[:resultFormat] ||= 'xml'
46
48
 
47
49
  begin
48
- resource = client[object_url(nil, options)]
50
+ resource = client[find_objects_url(options)]
49
51
  if block_given?
50
52
  resource.options[:block_response] = block_response
51
53
  end
52
54
  return resource.get
53
55
  rescue => e
54
56
  logger.error e.response
57
+ logger.flush if logger.respond_to? :flush
55
58
  raise "Error finding objects. See logger for details"
56
59
  end
57
60
  end
@@ -69,6 +72,7 @@ module Rubydora
69
72
  raise e
70
73
  rescue => e
71
74
  logger.error e.response
75
+ logger.flush if logger.respond_to? :flush
72
76
  raise "Error getting object #{pid}. See logger for details"
73
77
  end
74
78
  end
@@ -84,10 +88,25 @@ module Rubydora
84
88
  return client[object_url(pid, options)].post file, :content_type => 'text/xml'
85
89
  rescue => e
86
90
  logger.error e.response
91
+ logger.flush if logger.respond_to? :flush
87
92
  raise "Error ingesting object #{pid}. See logger for details"
88
93
  end
89
94
  end
90
95
 
96
+ # {include:RestApiClient::API_DOCUMENTATION}
97
+ # @param [Hash] options
98
+ # @option options [String] :pid
99
+ # @return [String]
100
+ def export options = {}
101
+ pid = options.delete(:pid)
102
+ begin
103
+ return client[export_object_url(pid, options)].get
104
+ rescue => e
105
+ logger.error e.response
106
+ raise "Error exporting object #{pid}. See logger for details"
107
+ end
108
+ end
109
+
91
110
  # {include:RestApiClient::API_DOCUMENTATION}
92
111
  # @param [Hash] options
93
112
  # @option options [String] :pid
@@ -98,6 +117,7 @@ module Rubydora
98
117
  return client[object_url(pid, options)].put nil
99
118
  rescue => e
100
119
  logger.error e.response
120
+ logger.flush if logger.respond_to? :flush
101
121
  raise "Error modifying object #{pid}. See logger for details"
102
122
  end
103
123
  end
@@ -114,6 +134,7 @@ module Rubydora
114
134
  raise e
115
135
  rescue => e
116
136
  logger.error e.response
137
+ logger.flush if logger.respond_to? :flush
117
138
  raise "Error purging object #{pid}. See logger for details"
118
139
  end
119
140
  end
@@ -127,9 +148,10 @@ module Rubydora
127
148
  options[:format] ||= 'xml'
128
149
  raise "" unless pid
129
150
  begin
130
- return client[url_for(object_url(pid) + "/versions", options)].get
151
+ return client[object_versions_url(pid, options)].get
131
152
  rescue => e
132
153
  logger.error e.response
154
+ logger.flush if logger.respond_to? :flush
133
155
  raise "Error getting versions for object #{pid}. See logger for details"
134
156
  end
135
157
  end
@@ -143,9 +165,10 @@ module Rubydora
143
165
  raise "" unless pid
144
166
  options[:format] ||= 'xml'
145
167
  begin
146
- return client[url_for(object_url(pid) + "/objectXML", options)].get
168
+ return client[object_xml_url(pid, options)].get
147
169
  rescue => e
148
170
  logger.error e.response
171
+ logger.flush if logger.respond_to? :flush
149
172
  raise "Error getting objectXML for object #{pid}. See logger for details"
150
173
  end
151
174
  end
@@ -165,6 +188,7 @@ module Rubydora
165
188
  raise e
166
189
  rescue => e
167
190
  logger.error e.response
191
+ logger.flush if logger.respond_to? :flush
168
192
  raise "Error getting datastream '#{dsid}' for object #{pid}. See logger for details"
169
193
  end
170
194
  end
@@ -183,6 +207,7 @@ module Rubydora
183
207
  return client[datastream_url(pid, dsid, options)].put nil
184
208
  rescue => e
185
209
  logger.error e.response
210
+ logger.flush if logger.respond_to? :flush
186
211
  raise "Error setting datastream options on #{dsid} for object #{pid}. See logger for details"
187
212
  end
188
213
  end
@@ -198,9 +223,10 @@ module Rubydora
198
223
  raise ArgumentError, "Must supply dsid" unless dsid
199
224
  options[:format] ||= 'xml'
200
225
  begin
201
- return client[url_for(datastream_url(pid, dsid) + "/history", options)].get
226
+ return client[datastream_history_url(pid, dsid, options)].get
202
227
  rescue => e
203
228
  logger.error e.response
229
+ logger.flush if logger.respond_to? :flush
204
230
  raise "Error getting versions for datastream #{dsid} for object #{pid}. See logger for details"
205
231
  end
206
232
  end
@@ -219,7 +245,7 @@ module Rubydora
219
245
  method ||= :get
220
246
  raise self.class.name + "#datastream_dissemination requires a DSID" unless dsid
221
247
  begin
222
- resource = client[url_for(datastream_url(pid, dsid) + "/content", options)]
248
+ resource = client[datastream_content_url(pid, dsid, options)]
223
249
  if block_given?
224
250
  resource.options[:block_response] = block_response
225
251
  end
@@ -228,6 +254,7 @@ module Rubydora
228
254
  raise e
229
255
  rescue => e
230
256
  logger.error e.response
257
+ logger.flush if logger.respond_to? :flush
231
258
  raise "Error getting dissemination for datastream #{dsid} for object #{pid}. See logger for details"
232
259
  end
233
260
  end
@@ -246,6 +273,7 @@ module Rubydora
246
273
  return client[datastream_url(pid, dsid, options)].post file, :content_type => content_type.to_s, :multipart => true
247
274
  rescue => e
248
275
  logger.error e.response
276
+ logger.flush if logger.respond_to? :flush
249
277
  raise "Error adding datastream #{dsid} for object #{pid}. See logger for details"
250
278
  end
251
279
  end
@@ -271,6 +299,7 @@ module Rubydora
271
299
  return client[datastream_url(pid, dsid, options)].put(file, rest_client_options)
272
300
  rescue => e
273
301
  logger.error e.response
302
+ logger.flush if logger.respond_to? :flush
274
303
  raise "Error modifying datastream #{dsid} for #{pid}. See logger for details"
275
304
  end
276
305
  end
@@ -287,6 +316,7 @@ module Rubydora
287
316
  client[datastream_url(pid, dsid, options)].delete
288
317
  rescue => e
289
318
  logger.error e.response
319
+ logger.flush if logger.respond_to? :flush
290
320
  raise "Error purging datastream #{dsid} for #{pid}. See logger for details"
291
321
  end
292
322
  end
@@ -300,9 +330,10 @@ module Rubydora
300
330
  raise "" unless pid
301
331
  options[:format] ||= 'xml'
302
332
  begin
303
- return client[url_for(object_url(pid) + "/relationships", options)].get
333
+ return client[object_relationship_url(pid, options)].get
304
334
  rescue => e
305
335
  logger.error e.response
336
+ logger.flush if logger.respond_to? :flush
306
337
  raise "Error getting relationships for #{pid}. See logger for details"
307
338
  end
308
339
  end
@@ -314,9 +345,10 @@ module Rubydora
314
345
  def add_relationship options = {}
315
346
  pid = options.delete(:pid) || options[:subject]
316
347
  begin
317
- return client[url_for(object_url(pid) + "/relationships/new", options)].post nil
348
+ return client[new_object_relationship_url(pid, options)].post nil
318
349
  rescue => e
319
350
  logger.error e.response
351
+ logger.flush if logger.respond_to? :flush
320
352
  raise "Error adding relationship for #{pid}. See logger for details"
321
353
  end
322
354
  end
@@ -328,9 +360,10 @@ module Rubydora
328
360
  def purge_relationship options = {}
329
361
  pid = options.delete(:pid) || options[:subject]
330
362
  begin
331
- return client[url_for(object_url(pid) + "/relationships", options)].delete
363
+ return client[object_relationship_url(pid, options)].delete
332
364
  rescue => e
333
365
  logger.error e.response
366
+ logger.flush if logger.respond_to? :flush
334
367
  raise "Error purging relationships for #{pid}. See logger for details"
335
368
  end
336
369
  end
@@ -354,47 +387,9 @@ module Rubydora
354
387
  return resource.get
355
388
  rescue => e
356
389
  logger.error e.response
390
+ logger.flush if logger.respond_to? :flush
357
391
  raise "Error getting dissemination for #{pid}. See logger for details"
358
392
  end
359
393
  end
360
-
361
- # Generate a REST API compatible URI
362
- # @param [String] base base URI
363
- # @param [Hash] options to convert to URL parameters
364
- # @return [String] URI
365
- def url_for base, options = nil
366
- return base unless options.is_a? Hash
367
- "#{base}" + (("?#{options.map { |key, value| "#{CGI::escape(key.to_s)}=#{CGI::escape(value.to_s)}"}.join("&") }" if options and not options.empty?) || '')
368
- end
369
-
370
- # Generate a base object REST API endpoint URI
371
- # @param [String] pid
372
- # @param [Hash] options to convert to URL parameters
373
- # @return [String] URI
374
- def object_url pid = nil, options = nil
375
- url_for("objects" + (("/#{CGI::escape(pid.to_s.gsub('info:fedora/', ''))}" if pid) || ''), options)
376
- end
377
-
378
- # Generate a base object dissemination REST API endpoint URI
379
- # @param [String] pid
380
- # @param [String] sdef
381
- # @param [String] method
382
- # @param [Hash] options to convert to URL parameters
383
- # @return [String] URI
384
- def dissemination_url pid, sdef = nil, method = nil, options = nil
385
- raise "" unless pid
386
- url_for(object_url(pid) + "/methods" + (("/#{CGI::escape(sdef)}" if sdef) || '') + (("/#{CGI::escape(method)}" if method) || ''), options)
387
- end
388
-
389
- # Generate a base datastream REST API endpoint URI
390
- # @param [String] pid
391
- # @param [String] dsid
392
- # @param [Hash] options to convert to URL parameters
393
- # @return [String] URI
394
- def datastream_url pid, dsid = nil, options = nil
395
- raise "" unless pid
396
- url_for(object_url(pid) + "/datastreams" + (("/#{CGI::escape(dsid)}" if dsid) || ''), options)
397
- end
398
-
399
394
  end
400
395
  end
data/lib/rubydora.rb CHANGED
@@ -5,6 +5,7 @@ module Rubydora
5
5
  autoload :Datastream, "rubydora/datastream"
6
6
  autoload :Repository, "rubydora/repository"
7
7
  autoload :ResourceIndex, "rubydora/resource_index"
8
+ autoload :FedoraUrlHelpers, "rubydora/fedora_url_helpers"
8
9
  autoload :RestApiClient, "rubydora/rest_api_client"
9
10
  autoload :Soap, "rubydora/soap"
10
11
  autoload :ModelsMixin, "rubydora/models_mixin"
@@ -72,6 +72,11 @@ describe Rubydora::RestApiClient do
72
72
  @mock_repository.ingest :pid => 'mypid'
73
73
  end
74
74
 
75
+ it "export" do
76
+ RestClient::Request.should_receive(:execute).with(hash_including(:url => "http://example.org/objects/mypid/export"))
77
+ @mock_repository.export :pid => 'mypid'
78
+ end
79
+
75
80
  it "modify_object" do
76
81
  RestClient::Request.should_receive(:execute) do |params|
77
82
  params.should have_key(:url)
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubydora
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0pre1
5
- prerelease: 5
4
+ version: 0.4.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Chris Beer
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-29 00:00:00.000000000 Z
12
+ date: 2012-01-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fastercsv
16
- requirement: &70158854103660 !ruby/object:Gem::Requirement
16
+ requirement: &2155958160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70158854103660
24
+ version_requirements: *2155958160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rest-client
27
- requirement: &70158854103200 !ruby/object:Gem::Requirement
27
+ requirement: &2155956720 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70158854103200
35
+ version_requirements: *2155956720
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: nokogiri
38
- requirement: &70158854102700 !ruby/object:Gem::Requirement
38
+ requirement: &2155955480 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70158854102700
46
+ version_requirements: *2155955480
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: mime-types
49
- requirement: &70158854102180 !ruby/object:Gem::Requirement
49
+ requirement: &2155953580 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70158854102180
57
+ version_requirements: *2155953580
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: activesupport
60
- requirement: &70158854101740 !ruby/object:Gem::Requirement
60
+ requirement: &2155952300 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70158854101740
68
+ version_requirements: *2155952300
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: activemodel
71
- requirement: &70158854101320 !ruby/object:Gem::Requirement
71
+ requirement: &2155951480 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70158854101320
79
+ version_requirements: *2155951480
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: savon
82
- requirement: &70158854117240 !ruby/object:Gem::Requirement
82
+ requirement: &2155950780 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *70158854117240
90
+ version_requirements: *2155950780
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rake
93
- requirement: &70158854116180 !ruby/object:Gem::Requirement
93
+ requirement: &2155966020 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70158854116180
101
+ version_requirements: *2155966020
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: shoulda
104
- requirement: &70158854115100 !ruby/object:Gem::Requirement
104
+ requirement: &2155962840 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70158854115100
112
+ version_requirements: *2155962840
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: bundler
115
- requirement: &70158854112280 !ruby/object:Gem::Requirement
115
+ requirement: &2155960880 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 1.0.14
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70158854112280
123
+ version_requirements: *2155960880
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rspec
126
- requirement: &70158854111780 !ruby/object:Gem::Requirement
126
+ requirement: &2155960000 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70158854111780
134
+ version_requirements: *2155960000
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: yard
137
- requirement: &70158854111220 !ruby/object:Gem::Requirement
137
+ requirement: &2155959220 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ! '>='
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: '0'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *70158854111220
145
+ version_requirements: *2155959220
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: jettywrapper
148
- requirement: &70158854110800 !ruby/object:Gem::Requirement
148
+ requirement: &2155974620 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ! '>='
@@ -153,7 +153,7 @@ dependencies:
153
153
  version: '0'
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *70158854110800
156
+ version_requirements: *2155974620
157
157
  description: ! 'Fedora Commons REST API ruby library : REQUIRES FCREPO 3.4+'
158
158
  email:
159
159
  - chris@cbeer.info
@@ -177,6 +177,7 @@ files:
177
177
  - lib/rubydora/ext/model_loader.rb
178
178
  - lib/rubydora/ext/solr.rb
179
179
  - lib/rubydora/extension_parameters.rb
180
+ - lib/rubydora/fedora_url_helpers.rb
180
181
  - lib/rubydora/models_mixin.rb
181
182
  - lib/rubydora/relationships_mixin.rb
182
183
  - lib/rubydora/repository.rb
@@ -211,13 +212,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
211
212
  version: '0'
212
213
  segments:
213
214
  - 0
214
- hash: 142486579625571647
215
+ hash: -3967539369509241218
215
216
  required_rubygems_version: !ruby/object:Gem::Requirement
216
217
  none: false
217
218
  requirements:
218
- - - ! '>'
219
+ - - ! '>='
219
220
  - !ruby/object:Gem::Version
220
- version: 1.3.1
221
+ version: '0'
222
+ segments:
223
+ - 0
224
+ hash: -3967539369509241218
221
225
  requirements: []
222
226
  rubyforge_project:
223
227
  rubygems_version: 1.8.10