rubydora 1.4.2 → 1.5.0

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