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 CHANGED
@@ -3,6 +3,7 @@ source "http://rubygems.org"
3
3
  gemspec
4
4
 
5
5
  gem 'activemodel', ">= 3.1.1"
6
+ gem 'backports'
6
7
 
7
8
  gem 'rcov', :platform => :mri_18
8
9
  gem 'simplecov', :platform => :mri_19
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.4.2
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
- end
59
+ class FedoraInvalidRequest < RubydoraError; end
60
+
61
+ class RecordNotFound < RubydoraError; end
62
62
 
63
63
  end
@@ -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
- # find an existing fedora object
46
- # TODO: raise an error if the object does not yet exist
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
- Deprecation.warn(Rubydora::DigitalObject, "DigitalObject.find called
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
- 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'
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
- 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'
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
@@ -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 = @repository.find('test:1')
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 = @repository.find('test:1')
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 = @repository.find('test:2')
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 = @repository.find('test:3')
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 = @repository.find('test:1')
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 = @repository.find('test:1')
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 = @repository.find('transactions:1')
173
+ obj = Rubydora::DigitalObject.new('transactions:1', @repository)
174
174
  obj.save
175
175
 
176
176
  t.rollback
177
177
  end
178
178
 
179
- obj = @repository.find('transactions:1')
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 = @repository.find('transactions:1')
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 = @repository.find('transactions:1')
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 = @repository.find('test:1')
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 = @repository.find('test:1')
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 = @repository.find('test:1')
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 = @repository.find('test:1')
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 = @repository.find('test:1')
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 = @repository.find('test:1')
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 = @repository.find('test:1')
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 = @repository.find('test:1')
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 = @repository.find('test:1')
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)).and_return '<xml />'
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
- version: 1.4.2
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
- date: 2013-03-06 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2013-03-26 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
14
21
  name: fastercsv
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
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
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
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
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - '>='
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
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
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
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
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - '>='
172
- - !ruby/object:Gem::Version
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
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
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
- files:
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
- metadata: {}
274
+
263
275
  post_install_message:
264
276
  rdoc_options: []
265
- require_paths:
277
+
278
+ require_paths:
266
279
  - lib
267
- required_ruby_version: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - '>='
270
- - !ruby/object:Gem::Version
271
- version: '0'
272
- required_rubygems_version: !ruby/object:Gem::Requirement
273
- requirements:
274
- - - '>='
275
- - !ruby/object:Gem::Version
276
- version: '0'
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: 2.0.0
301
+ rubygems_version: 1.8.25
280
302
  signing_key:
281
- specification_version: 4
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