rubydora 1.4.2 → 1.5.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.
- data/Gemfile +1 -0
- data/History.textile +7 -0
- data/VERSION +1 -1
- data/lib/rubydora.rb +4 -4
- data/lib/rubydora/datastream.rb +41 -0
- data/lib/rubydora/digital_object.rb +4 -11
- data/lib/rubydora/rest_api_client.rb +6 -2
- data/spec/lib/datastream_spec.rb +46 -0
- data/spec/lib/integration_test_spec.rb +20 -22
- data/spec/lib/transactions_spec.rb +1 -1
- metadata +224 -202
- checksums.yaml +0 -7
data/Gemfile
CHANGED
data/History.textile
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
h3. 1.5.0
|
|
2
|
+
* Support for streaming range requests
|
|
3
|
+
* Removed deprecated functionality for calling find on a non-existant datastream.
|
|
4
|
+
|
|
5
|
+
h3. 1.4.0
|
|
6
|
+
* Don't load datastreams more than necessary
|
|
7
|
+
|
|
1
8
|
h3. 1.2.1
|
|
2
9
|
* Support for Rack::Test::UploadedFile
|
|
3
10
|
* Allow reading content that is a kind of IO after save
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.5.0
|
data/lib/rubydora.rb
CHANGED
|
@@ -54,10 +54,10 @@ module Rubydora
|
|
|
54
54
|
{:validateChecksum=>false}
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
class RubydoraError < StandardError
|
|
58
|
-
end
|
|
57
|
+
class RubydoraError < StandardError; end
|
|
59
58
|
|
|
60
|
-
class FedoraInvalidRequest < RubydoraError
|
|
61
|
-
|
|
59
|
+
class FedoraInvalidRequest < RubydoraError; end
|
|
60
|
+
|
|
61
|
+
class RecordNotFound < RubydoraError; end
|
|
62
62
|
|
|
63
63
|
end
|
data/lib/rubydora/datastream.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'equivalent-xml'
|
|
2
|
+
require 'backports' # for Enumerator.new in ruby 1.8.7
|
|
2
3
|
module Rubydora
|
|
3
4
|
# This class represents a Fedora datastream object
|
|
4
5
|
# and provides helper methods for creating and manipulating
|
|
@@ -214,6 +215,46 @@ module Rubydora
|
|
|
214
215
|
behaves_like_io?(@content) || !content.blank?
|
|
215
216
|
end
|
|
216
217
|
|
|
218
|
+
# Returns a streaming response of the datastream. This is ideal for large datasteams because
|
|
219
|
+
# it doesn't require holding the entire content in memory. If you specify the from and length
|
|
220
|
+
# parameters it simulates a range request. Unfortunatly Fedora 3 doesn't have range requests,
|
|
221
|
+
# so this method needs to download the whole thing and just seek to the part you care about.
|
|
222
|
+
#
|
|
223
|
+
# @param [Integer] from (bytes) the starting point you want to return.
|
|
224
|
+
#
|
|
225
|
+
def stream (from = 0, length = nil)
|
|
226
|
+
raise "Can't determine dsSize" unless dsSize
|
|
227
|
+
length = dsSize - from unless length
|
|
228
|
+
counter = 0
|
|
229
|
+
Enumerator.new do |blk|
|
|
230
|
+
repository.datastream_dissemination(:pid => pid, :dsid => dsid) do |response|
|
|
231
|
+
response.read_body do |chunk|
|
|
232
|
+
last_counter = counter
|
|
233
|
+
counter += chunk.size
|
|
234
|
+
if (counter > from) # greater than the range minimum
|
|
235
|
+
if counter > from + length
|
|
236
|
+
# At the end of what we need. Write the beginning of what was read.
|
|
237
|
+
offset = (length + from) - counter
|
|
238
|
+
blk << chunk[0..offset]
|
|
239
|
+
break
|
|
240
|
+
elsif from >= last_counter
|
|
241
|
+
# At the end of what we beginning of what we need. Write the end of what was read.
|
|
242
|
+
offset = from - last_counter
|
|
243
|
+
blk << chunk[offset..-1]
|
|
244
|
+
else
|
|
245
|
+
# In the middle. We need all of this
|
|
246
|
+
blk << chunk
|
|
247
|
+
end
|
|
248
|
+
if (counter == from + length)
|
|
249
|
+
# Iteration was exactly the right length, no more reads needed.
|
|
250
|
+
break
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
end
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
217
258
|
# Retrieve the datastream profile as a hash (and cache it)
|
|
218
259
|
# @param opts [Hash] :validateChecksum if you want fedora to validate the checksum
|
|
219
260
|
# @return [Hash] see Fedora #getDatastream documentation for keys
|
|
@@ -15,11 +15,6 @@ module Rubydora
|
|
|
15
15
|
include Rubydora::ModelsMixin
|
|
16
16
|
include Rubydora::RelationshipsMixin
|
|
17
17
|
|
|
18
|
-
extend Deprecation
|
|
19
|
-
|
|
20
|
-
self.deprecation_horizon = 'rubydora 0.6'
|
|
21
|
-
|
|
22
|
-
|
|
23
18
|
attr_reader :pid
|
|
24
19
|
|
|
25
20
|
# mapping object parameters to profile elements
|
|
@@ -42,17 +37,15 @@ module Rubydora
|
|
|
42
37
|
RUBY
|
|
43
38
|
end
|
|
44
39
|
|
|
45
|
-
#
|
|
46
|
-
#
|
|
40
|
+
# Find an existing Fedora object
|
|
41
|
+
#
|
|
47
42
|
# @param [String] pid
|
|
48
43
|
# @param [Rubydora::Repository] context
|
|
44
|
+
# @raise [RecordNotFound] if the record is not found in Fedora
|
|
49
45
|
def self.find pid, repository = nil, options = {}
|
|
50
46
|
obj = self.new pid, repository, options
|
|
51
47
|
if obj.new?
|
|
52
|
-
|
|
53
|
-
for an object that doesn't exist. In #{Rubydora::DigitalObject.deprecation_horizon},
|
|
54
|
-
this behavior will raise an exception. Use
|
|
55
|
-
DigitalObject.new or DigitalObject.find_or_initialize instead.")
|
|
48
|
+
raise Rubydora::RecordNotFound, "DigitalObject.find called for an object that doesn't exist"
|
|
56
49
|
end
|
|
57
50
|
|
|
58
51
|
obj
|
|
@@ -281,7 +281,9 @@ module Rubydora
|
|
|
281
281
|
pid = query_options.delete(:pid)
|
|
282
282
|
dsid = query_options.delete(:dsid)
|
|
283
283
|
file = query_options.delete(:content)
|
|
284
|
-
|
|
284
|
+
# In ruby 1.8.7 StringIO (file) responds_to? :path, but it always returns nil, In ruby 1.9.3 StringIO doesn't have path.
|
|
285
|
+
# When we discontinue ruby 1.8.7 support we can remove the `|| ''` part.
|
|
286
|
+
content_type = query_options.delete(:content_type) || query_options[:mimeType] || (MIME::Types.type_for(file.path || '').first if file.respond_to? :path) || 'application/octet-stream'
|
|
285
287
|
run_hook :before_add_datastream, :pid => pid, :dsid => dsid, :file => file, :options => options
|
|
286
288
|
str = file.respond_to?(:read) ? file.read : file
|
|
287
289
|
file.rewind if file.respond_to?(:rewind)
|
|
@@ -300,7 +302,9 @@ module Rubydora
|
|
|
300
302
|
pid = query_options.delete(:pid)
|
|
301
303
|
dsid = query_options.delete(:dsid)
|
|
302
304
|
file = query_options.delete(:content)
|
|
303
|
-
|
|
305
|
+
# In ruby 1.8.7 StringIO (file) responds_to? :path, but it always returns nil, In ruby 1.9.3 StringIO doesn't have path.
|
|
306
|
+
# When we discontinue ruby 1.8.7 support we can remove the `|| ''` part.
|
|
307
|
+
content_type = query_options.delete(:content_type) || query_options[:mimeType] || (MIME::Types.type_for(file.path || '').first if file.respond_to? :path) || 'application/octet-stream'
|
|
304
308
|
|
|
305
309
|
rest_client_options = {}
|
|
306
310
|
if file
|
data/spec/lib/datastream_spec.rb
CHANGED
|
@@ -8,6 +8,52 @@ describe Rubydora::Datastream do
|
|
|
8
8
|
@mock_object.stub(:repository => @mock_repository, :pid => 'pid', :new? => false)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
+
describe "stream" do
|
|
12
|
+
subject { Rubydora::Datastream.new @mock_object, 'dsid' }
|
|
13
|
+
before do
|
|
14
|
+
stub_response = stub()
|
|
15
|
+
stub_response.stub(:read_body).and_yield("one1").and_yield('two2').and_yield('thre').and_yield('four')
|
|
16
|
+
@mock_repository.should_receive(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_yield(stub_response)
|
|
17
|
+
prof = <<-XML
|
|
18
|
+
<datastreamProfile>
|
|
19
|
+
<dsSize>16</dsSize>
|
|
20
|
+
</datastreamProfile>
|
|
21
|
+
XML
|
|
22
|
+
subject.profile = prof
|
|
23
|
+
end
|
|
24
|
+
it "should send the whold thing" do
|
|
25
|
+
e = subject.stream()
|
|
26
|
+
result = ''
|
|
27
|
+
e.each do |blk|
|
|
28
|
+
result << blk
|
|
29
|
+
end
|
|
30
|
+
result.should == 'one1two2threfour'
|
|
31
|
+
end
|
|
32
|
+
it "should send the whole thing when the range is open ended" do
|
|
33
|
+
e = subject.stream(0)
|
|
34
|
+
result = ''
|
|
35
|
+
e.each do |blk|
|
|
36
|
+
result << blk
|
|
37
|
+
end
|
|
38
|
+
result.should == 'one1two2threfour'
|
|
39
|
+
end
|
|
40
|
+
it "should get a range not starting at the beginning" do
|
|
41
|
+
e = subject.stream(3, 13)
|
|
42
|
+
result = ''
|
|
43
|
+
e.each do |blk|
|
|
44
|
+
result << blk
|
|
45
|
+
end
|
|
46
|
+
result.should == '1two2threfour'
|
|
47
|
+
end
|
|
48
|
+
it "should get a range not ending at the end" do
|
|
49
|
+
e = subject.stream(4, 8)
|
|
50
|
+
result = ''
|
|
51
|
+
e.each do |blk|
|
|
52
|
+
result << blk
|
|
53
|
+
end
|
|
54
|
+
result.should == 'two2thre'
|
|
55
|
+
end
|
|
56
|
+
end
|
|
11
57
|
|
|
12
58
|
describe "create" do
|
|
13
59
|
before(:each) do
|
|
@@ -34,14 +34,14 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
it "should create an object" do
|
|
37
|
-
obj =
|
|
37
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
38
38
|
obj.new?.should == true
|
|
39
39
|
obj.save
|
|
40
40
|
obj.new?.should == false
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
it "new should not return true until the profile is read" do
|
|
44
|
-
obj =
|
|
44
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
45
45
|
obj.save
|
|
46
46
|
new_obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
47
47
|
new_obj.new?.should == false
|
|
@@ -58,13 +58,13 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
it "should create another object" do
|
|
61
|
-
obj =
|
|
61
|
+
obj = Rubydora::DigitalObject.new('test:2', @repository)
|
|
62
62
|
obj.save
|
|
63
63
|
obj.new?.should == false
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
it "should create and update object labels" do
|
|
67
|
-
obj =
|
|
67
|
+
obj = Rubydora::DigitalObject.new('test:3', @repository)
|
|
68
68
|
obj.label = 'asdf'
|
|
69
69
|
obj.save
|
|
70
70
|
|
|
@@ -130,7 +130,7 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
130
130
|
end
|
|
131
131
|
|
|
132
132
|
it "should save changed datastreams when the object is saved" do
|
|
133
|
-
obj =
|
|
133
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
134
134
|
obj.datastreams["new_ds"].content = "XXX"
|
|
135
135
|
obj.datastreams["empty_ds"].new?
|
|
136
136
|
obj.save
|
|
@@ -140,7 +140,7 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
140
140
|
end
|
|
141
141
|
|
|
142
142
|
it "should update datastream attributes without changing the content (or mime type)" do
|
|
143
|
-
obj =
|
|
143
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
144
144
|
obj.datastreams["my_ds"].content = "XXX"
|
|
145
145
|
obj.datastreams["my_ds"].mimeType = "application/x-text"
|
|
146
146
|
obj.save
|
|
@@ -170,20 +170,19 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
170
170
|
@repository.find('transactions:1').delete rescue nil
|
|
171
171
|
|
|
172
172
|
@repository.transaction do |t|
|
|
173
|
-
obj =
|
|
173
|
+
obj = Rubydora::DigitalObject.new('transactions:1', @repository)
|
|
174
174
|
obj.save
|
|
175
175
|
|
|
176
176
|
t.rollback
|
|
177
177
|
end
|
|
178
178
|
|
|
179
|
-
|
|
180
|
-
obj.should be_new
|
|
179
|
+
lambda { @repository.find('transactions:1') }.should raise_error Rubydora::RecordNotFound
|
|
181
180
|
end
|
|
182
181
|
|
|
183
182
|
it "should work on purge" do
|
|
184
183
|
@repository.find('transactions:1').delete rescue nil
|
|
185
184
|
|
|
186
|
-
obj =
|
|
185
|
+
obj = Rubydora::DigitalObject.new('transactions:1', @repository)
|
|
187
186
|
obj.save
|
|
188
187
|
|
|
189
188
|
@repository.transaction do |t|
|
|
@@ -198,8 +197,7 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
198
197
|
|
|
199
198
|
it "should work on datastreams" do
|
|
200
199
|
@repository.find('transactions:1').delete rescue nil
|
|
201
|
-
|
|
202
|
-
obj = @repository.find('transactions:1')
|
|
200
|
+
obj = Rubydora::DigitalObject.new('transactions:1', @repository)
|
|
203
201
|
obj.save
|
|
204
202
|
|
|
205
203
|
ds = obj.datastreams['datastream_to_delete']
|
|
@@ -243,7 +241,7 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
243
241
|
it "should work on relationships" do
|
|
244
242
|
@repository.find('transactions:1').delete rescue nil
|
|
245
243
|
|
|
246
|
-
obj =
|
|
244
|
+
obj = Rubydora::DigitalObject.new('transactions:1', @repository)
|
|
247
245
|
obj.save
|
|
248
246
|
@repository.add_relationship :subject => obj.pid, :predicate => 'uri:asdf', :object => 'fedora:object'
|
|
249
247
|
|
|
@@ -268,7 +266,7 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
268
266
|
end
|
|
269
267
|
|
|
270
268
|
it "should have read-only versions" do
|
|
271
|
-
obj =
|
|
269
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
272
270
|
expect { obj.versions.first.label = "asdf" }.to raise_error
|
|
273
271
|
end
|
|
274
272
|
|
|
@@ -287,7 +285,7 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
287
285
|
#end
|
|
288
286
|
|
|
289
287
|
it "should access datastreams list using asOfDateTime (and pass the asOfDateTime through to the datastreams)" do
|
|
290
|
-
obj =
|
|
288
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
291
289
|
oldest = obj.versions.first.datastreams.keys
|
|
292
290
|
newest = obj.versions.last.datastreams.keys
|
|
293
291
|
(newest - oldest).should_not be_empty
|
|
@@ -299,21 +297,21 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
299
297
|
describe "datastream versions" do
|
|
300
298
|
|
|
301
299
|
it "should have versions" do
|
|
302
|
-
obj =
|
|
300
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
303
301
|
versions = obj.datastreams["my_ds"].versions
|
|
304
302
|
versions.should_not be_empty
|
|
305
303
|
versions.map { |x| x.versionID }.should include('my_ds.1', 'my_ds.0')
|
|
306
304
|
end
|
|
307
305
|
|
|
308
306
|
it "should have read-only versions" do
|
|
309
|
-
obj =
|
|
307
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
310
308
|
ds = obj.datastreams["my_ds"].asOfDateTime(Time.now)
|
|
311
309
|
expect { ds.dsLabel = 'asdf' }.to raise_error
|
|
312
310
|
expect { ds.content = 'asdf' }.to raise_error
|
|
313
311
|
end
|
|
314
312
|
|
|
315
313
|
it "should access the content of older datastreams" do
|
|
316
|
-
obj =
|
|
314
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
317
315
|
|
|
318
316
|
ds = obj.datastreams["my_ds"]
|
|
319
317
|
ds.content = "YYY"
|
|
@@ -324,7 +322,7 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
324
322
|
end
|
|
325
323
|
|
|
326
324
|
it "should allow the user to go from a versioned datastream to an unversioned datastream" do
|
|
327
|
-
obj =
|
|
325
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
328
326
|
versions_count = obj.datastreams["my_ds"].versions.length
|
|
329
327
|
|
|
330
328
|
obj.datastreams["my_ds"].versionable.should be_true
|
|
@@ -352,7 +350,7 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
352
350
|
end
|
|
353
351
|
|
|
354
352
|
it "should default to application/octet-stream" do
|
|
355
|
-
obj =
|
|
353
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
356
354
|
obj.datastreams["my_ds"].content = "XXX"
|
|
357
355
|
obj.save
|
|
358
356
|
|
|
@@ -361,7 +359,7 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
361
359
|
end
|
|
362
360
|
|
|
363
361
|
it "should allow the user to specify a mimetype" do
|
|
364
|
-
obj =
|
|
362
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
365
363
|
obj.datastreams["my_ds"].content = "XXX"
|
|
366
364
|
obj.datastreams["my_ds"].mimeType = "text/plain"
|
|
367
365
|
obj.save
|
|
@@ -371,7 +369,7 @@ describe "Integration testing against a live Fedora repository", :integration =>
|
|
|
371
369
|
end
|
|
372
370
|
|
|
373
371
|
it "should preserve the mimetype on update" do
|
|
374
|
-
obj =
|
|
372
|
+
obj = Rubydora::DigitalObject.new('test:1', @repository)
|
|
375
373
|
obj.datastreams["my_ds"].content = "XXX"
|
|
376
374
|
obj.datastreams["my_ds"].mimeType = "text/plain"
|
|
377
375
|
obj.save
|
|
@@ -15,7 +15,7 @@ describe Rubydora::Transactions do
|
|
|
15
15
|
subject.client.stub_chain(:[], :delete)
|
|
16
16
|
|
|
17
17
|
# this should be squelched
|
|
18
|
-
subject.should_not_receive(:export).with(hash_including(:pid => 'asdf', :context => :archive))
|
|
18
|
+
subject.should_not_receive(:export).with(hash_including(:pid => 'asdf', :context => :archive))
|
|
19
19
|
|
|
20
20
|
subject.transaction do |t|
|
|
21
21
|
subject.ingest :pid => 'asdf', :file => '<a />'
|
metadata
CHANGED
|
@@ -1,232 +1,244 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rubydora
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
hash: 3
|
|
5
|
+
prerelease:
|
|
6
|
+
segments:
|
|
7
|
+
- 1
|
|
8
|
+
- 5
|
|
9
|
+
- 0
|
|
10
|
+
version: 1.5.0
|
|
5
11
|
platform: ruby
|
|
6
|
-
authors:
|
|
12
|
+
authors:
|
|
7
13
|
- Chris Beer
|
|
8
14
|
autorequire:
|
|
9
15
|
bindir: bin
|
|
10
16
|
cert_chain: []
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
|
|
18
|
+
date: 2013-03-26 00:00:00 Z
|
|
19
|
+
dependencies:
|
|
20
|
+
- !ruby/object:Gem::Dependency
|
|
14
21
|
name: fastercsv
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
|
23
|
+
none: false
|
|
24
|
+
requirements:
|
|
25
|
+
- - ">="
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
hash: 3
|
|
28
|
+
segments:
|
|
29
|
+
- 0
|
|
30
|
+
version: "0"
|
|
21
31
|
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - '>='
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: rest-client
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - '>='
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
32
|
type: :runtime
|
|
33
|
+
requirement: *id001
|
|
34
|
+
- !ruby/object:Gem::Dependency
|
|
35
|
+
name: rest-client
|
|
36
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
|
37
|
+
none: false
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
hash: 3
|
|
42
|
+
segments:
|
|
43
|
+
- 0
|
|
44
|
+
version: "0"
|
|
35
45
|
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - '>='
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: nokogiri
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - '>='
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
46
|
type: :runtime
|
|
47
|
+
requirement: *id002
|
|
48
|
+
- !ruby/object:Gem::Dependency
|
|
49
|
+
name: nokogiri
|
|
50
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
|
51
|
+
none: false
|
|
52
|
+
requirements:
|
|
53
|
+
- - ">="
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
hash: 3
|
|
56
|
+
segments:
|
|
57
|
+
- 0
|
|
58
|
+
version: "0"
|
|
49
59
|
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - '>='
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: equivalent-xml
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - '>='
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
60
|
type: :runtime
|
|
61
|
+
requirement: *id003
|
|
62
|
+
- !ruby/object:Gem::Dependency
|
|
63
|
+
name: equivalent-xml
|
|
64
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
|
65
|
+
none: false
|
|
66
|
+
requirements:
|
|
67
|
+
- - ">="
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
hash: 3
|
|
70
|
+
segments:
|
|
71
|
+
- 0
|
|
72
|
+
version: "0"
|
|
63
73
|
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - '>='
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: mime-types
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - '>='
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0'
|
|
76
74
|
type: :runtime
|
|
75
|
+
requirement: *id004
|
|
76
|
+
- !ruby/object:Gem::Dependency
|
|
77
|
+
name: mime-types
|
|
78
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
|
79
|
+
none: false
|
|
80
|
+
requirements:
|
|
81
|
+
- - ">="
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
hash: 3
|
|
84
|
+
segments:
|
|
85
|
+
- 0
|
|
86
|
+
version: "0"
|
|
77
87
|
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - '>='
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: activesupport
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - '>='
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0'
|
|
90
88
|
type: :runtime
|
|
89
|
+
requirement: *id005
|
|
90
|
+
- !ruby/object:Gem::Dependency
|
|
91
|
+
name: activesupport
|
|
92
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
|
93
|
+
none: false
|
|
94
|
+
requirements:
|
|
95
|
+
- - ">="
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
hash: 3
|
|
98
|
+
segments:
|
|
99
|
+
- 0
|
|
100
|
+
version: "0"
|
|
91
101
|
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - '>='
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: activemodel
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - '>='
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0'
|
|
104
102
|
type: :runtime
|
|
103
|
+
requirement: *id006
|
|
104
|
+
- !ruby/object:Gem::Dependency
|
|
105
|
+
name: activemodel
|
|
106
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
|
107
|
+
none: false
|
|
108
|
+
requirements:
|
|
109
|
+
- - ">="
|
|
110
|
+
- !ruby/object:Gem::Version
|
|
111
|
+
hash: 3
|
|
112
|
+
segments:
|
|
113
|
+
- 0
|
|
114
|
+
version: "0"
|
|
105
115
|
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - '>='
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0'
|
|
111
|
-
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: hooks
|
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
|
114
|
-
requirements:
|
|
115
|
-
- - '>='
|
|
116
|
-
- !ruby/object:Gem::Version
|
|
117
|
-
version: '0'
|
|
118
116
|
type: :runtime
|
|
117
|
+
requirement: *id007
|
|
118
|
+
- !ruby/object:Gem::Dependency
|
|
119
|
+
name: hooks
|
|
120
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
|
121
|
+
none: false
|
|
122
|
+
requirements:
|
|
123
|
+
- - ">="
|
|
124
|
+
- !ruby/object:Gem::Version
|
|
125
|
+
hash: 3
|
|
126
|
+
segments:
|
|
127
|
+
- 0
|
|
128
|
+
version: "0"
|
|
119
129
|
prerelease: false
|
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
requirements:
|
|
122
|
-
- - '>='
|
|
123
|
-
- !ruby/object:Gem::Version
|
|
124
|
-
version: '0'
|
|
125
|
-
- !ruby/object:Gem::Dependency
|
|
126
|
-
name: deprecation
|
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
|
128
|
-
requirements:
|
|
129
|
-
- - '>='
|
|
130
|
-
- !ruby/object:Gem::Version
|
|
131
|
-
version: '0'
|
|
132
130
|
type: :runtime
|
|
131
|
+
requirement: *id008
|
|
132
|
+
- !ruby/object:Gem::Dependency
|
|
133
|
+
name: deprecation
|
|
134
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
|
135
|
+
none: false
|
|
136
|
+
requirements:
|
|
137
|
+
- - ">="
|
|
138
|
+
- !ruby/object:Gem::Version
|
|
139
|
+
hash: 3
|
|
140
|
+
segments:
|
|
141
|
+
- 0
|
|
142
|
+
version: "0"
|
|
133
143
|
prerelease: false
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
- !ruby/object:Gem::Version
|
|
138
|
-
version: '0'
|
|
139
|
-
- !ruby/object:Gem::Dependency
|
|
144
|
+
type: :runtime
|
|
145
|
+
requirement: *id009
|
|
146
|
+
- !ruby/object:Gem::Dependency
|
|
140
147
|
name: rake
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
148
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
|
149
|
+
none: false
|
|
150
|
+
requirements:
|
|
151
|
+
- - ">="
|
|
152
|
+
- !ruby/object:Gem::Version
|
|
153
|
+
hash: 3
|
|
154
|
+
segments:
|
|
155
|
+
- 0
|
|
156
|
+
version: "0"
|
|
147
157
|
prerelease: false
|
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
-
requirements:
|
|
150
|
-
- - '>='
|
|
151
|
-
- !ruby/object:Gem::Version
|
|
152
|
-
version: '0'
|
|
153
|
-
- !ruby/object:Gem::Dependency
|
|
154
|
-
name: shoulda
|
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
|
156
|
-
requirements:
|
|
157
|
-
- - '>='
|
|
158
|
-
- !ruby/object:Gem::Version
|
|
159
|
-
version: '0'
|
|
160
158
|
type: :development
|
|
159
|
+
requirement: *id010
|
|
160
|
+
- !ruby/object:Gem::Dependency
|
|
161
|
+
name: shoulda
|
|
162
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
|
163
|
+
none: false
|
|
164
|
+
requirements:
|
|
165
|
+
- - ">="
|
|
166
|
+
- !ruby/object:Gem::Version
|
|
167
|
+
hash: 3
|
|
168
|
+
segments:
|
|
169
|
+
- 0
|
|
170
|
+
version: "0"
|
|
161
171
|
prerelease: false
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
- !ruby/object:Gem::Version
|
|
166
|
-
version: '0'
|
|
167
|
-
- !ruby/object:Gem::Dependency
|
|
172
|
+
type: :development
|
|
173
|
+
requirement: *id011
|
|
174
|
+
- !ruby/object:Gem::Dependency
|
|
168
175
|
name: bundler
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
176
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
|
177
|
+
none: false
|
|
178
|
+
requirements:
|
|
179
|
+
- - ">="
|
|
180
|
+
- !ruby/object:Gem::Version
|
|
181
|
+
hash: 11
|
|
182
|
+
segments:
|
|
183
|
+
- 1
|
|
184
|
+
- 0
|
|
185
|
+
- 14
|
|
173
186
|
version: 1.0.14
|
|
174
|
-
type: :development
|
|
175
187
|
prerelease: false
|
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
-
requirements:
|
|
178
|
-
- - '>='
|
|
179
|
-
- !ruby/object:Gem::Version
|
|
180
|
-
version: 1.0.14
|
|
181
|
-
- !ruby/object:Gem::Dependency
|
|
182
|
-
name: rspec
|
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
|
184
|
-
requirements:
|
|
185
|
-
- - '>='
|
|
186
|
-
- !ruby/object:Gem::Version
|
|
187
|
-
version: '0'
|
|
188
188
|
type: :development
|
|
189
|
+
requirement: *id012
|
|
190
|
+
- !ruby/object:Gem::Dependency
|
|
191
|
+
name: rspec
|
|
192
|
+
version_requirements: &id013 !ruby/object:Gem::Requirement
|
|
193
|
+
none: false
|
|
194
|
+
requirements:
|
|
195
|
+
- - ">="
|
|
196
|
+
- !ruby/object:Gem::Version
|
|
197
|
+
hash: 3
|
|
198
|
+
segments:
|
|
199
|
+
- 0
|
|
200
|
+
version: "0"
|
|
189
201
|
prerelease: false
|
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
-
requirements:
|
|
192
|
-
- - '>='
|
|
193
|
-
- !ruby/object:Gem::Version
|
|
194
|
-
version: '0'
|
|
195
|
-
- !ruby/object:Gem::Dependency
|
|
196
|
-
name: yard
|
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
|
198
|
-
requirements:
|
|
199
|
-
- - '>='
|
|
200
|
-
- !ruby/object:Gem::Version
|
|
201
|
-
version: '0'
|
|
202
202
|
type: :development
|
|
203
|
+
requirement: *id013
|
|
204
|
+
- !ruby/object:Gem::Dependency
|
|
205
|
+
name: yard
|
|
206
|
+
version_requirements: &id014 !ruby/object:Gem::Requirement
|
|
207
|
+
none: false
|
|
208
|
+
requirements:
|
|
209
|
+
- - ">="
|
|
210
|
+
- !ruby/object:Gem::Version
|
|
211
|
+
hash: 3
|
|
212
|
+
segments:
|
|
213
|
+
- 0
|
|
214
|
+
version: "0"
|
|
203
215
|
prerelease: false
|
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
205
|
-
requirements:
|
|
206
|
-
- - '>='
|
|
207
|
-
- !ruby/object:Gem::Version
|
|
208
|
-
version: '0'
|
|
209
|
-
- !ruby/object:Gem::Dependency
|
|
210
|
-
name: jettywrapper
|
|
211
|
-
requirement: !ruby/object:Gem::Requirement
|
|
212
|
-
requirements:
|
|
213
|
-
- - '>='
|
|
214
|
-
- !ruby/object:Gem::Version
|
|
215
|
-
version: '0'
|
|
216
216
|
type: :development
|
|
217
|
+
requirement: *id014
|
|
218
|
+
- !ruby/object:Gem::Dependency
|
|
219
|
+
name: jettywrapper
|
|
220
|
+
version_requirements: &id015 !ruby/object:Gem::Requirement
|
|
221
|
+
none: false
|
|
222
|
+
requirements:
|
|
223
|
+
- - ">="
|
|
224
|
+
- !ruby/object:Gem::Version
|
|
225
|
+
hash: 3
|
|
226
|
+
segments:
|
|
227
|
+
- 0
|
|
228
|
+
version: "0"
|
|
217
229
|
prerelease: false
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
- - '>='
|
|
221
|
-
- !ruby/object:Gem::Version
|
|
222
|
-
version: '0'
|
|
230
|
+
type: :development
|
|
231
|
+
requirement: *id015
|
|
223
232
|
description: Fedora Commons REST API ruby library
|
|
224
|
-
email:
|
|
233
|
+
email:
|
|
225
234
|
- chris@cbeer.info
|
|
226
235
|
executables: []
|
|
236
|
+
|
|
227
237
|
extensions: []
|
|
238
|
+
|
|
228
239
|
extra_rdoc_files: []
|
|
229
|
-
|
|
240
|
+
|
|
241
|
+
files:
|
|
230
242
|
- .gitignore
|
|
231
243
|
- .gitmodules
|
|
232
244
|
- Gemfile
|
|
@@ -259,28 +271,38 @@ files:
|
|
|
259
271
|
- spec/spec_helper.rb
|
|
260
272
|
homepage: http://github.com/cbeer/rubydora
|
|
261
273
|
licenses: []
|
|
262
|
-
|
|
274
|
+
|
|
263
275
|
post_install_message:
|
|
264
276
|
rdoc_options: []
|
|
265
|
-
|
|
277
|
+
|
|
278
|
+
require_paths:
|
|
266
279
|
- lib
|
|
267
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
280
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
281
|
+
none: false
|
|
282
|
+
requirements:
|
|
283
|
+
- - ">="
|
|
284
|
+
- !ruby/object:Gem::Version
|
|
285
|
+
hash: 3
|
|
286
|
+
segments:
|
|
287
|
+
- 0
|
|
288
|
+
version: "0"
|
|
289
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
290
|
+
none: false
|
|
291
|
+
requirements:
|
|
292
|
+
- - ">="
|
|
293
|
+
- !ruby/object:Gem::Version
|
|
294
|
+
hash: 3
|
|
295
|
+
segments:
|
|
296
|
+
- 0
|
|
297
|
+
version: "0"
|
|
277
298
|
requirements: []
|
|
299
|
+
|
|
278
300
|
rubyforge_project:
|
|
279
|
-
rubygems_version:
|
|
301
|
+
rubygems_version: 1.8.25
|
|
280
302
|
signing_key:
|
|
281
|
-
specification_version:
|
|
303
|
+
specification_version: 3
|
|
282
304
|
summary: Fedora Commons REST API ruby library
|
|
283
|
-
test_files:
|
|
305
|
+
test_files:
|
|
284
306
|
- spec/lib/datastream_spec.rb
|
|
285
307
|
- spec/lib/digital_object_spec.rb
|
|
286
308
|
- spec/lib/integration_test_spec.rb
|
checksums.yaml
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
SHA1:
|
|
3
|
-
metadata.gz: 5069469a38e8d2b0ddbf2d4f582203c910a65c8a
|
|
4
|
-
data.tar.gz: a4296b547a28fa25974cbe141726614a35af5f77
|
|
5
|
-
SHA512:
|
|
6
|
-
metadata.gz: abbdea02814f6557eae68f99e29b12373cf3557c7d8a5cf0becb7878e71cc82e2cdc524c879ade6d8a443889b420b97c15184d4688baee8bc8756eeb8a0220f7
|
|
7
|
-
data.tar.gz: a91c49eda49241b330189e4b9baa5bdec6eaf66f914a0d223e3ad6b4f852604ae61e093e42e79b1168ebcb2a2565b4029a707f20c4e71a130147485724e2dbcf
|