rubydora 0.1.4 → 0.1.5

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/Rakefile CHANGED
@@ -33,3 +33,8 @@ Rake::RDocTask.new do |rdoc|
33
33
  rdoc.rdoc_files.include('README*')
34
34
  rdoc.rdoc_files.include('lib/**/*.rb')
35
35
  end
36
+
37
+ desc "Open an irb session preloaded with this library"
38
+ task :console do
39
+ sh "irb -rubygems -I lib -r rubydora.rb"
40
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -13,9 +13,9 @@ module Rubydora
13
13
  attr_reader :digital_object, :dsid
14
14
 
15
15
  # mapping datastream attributes (and api parameters) to datastream profile names
16
- DS_ATTRIBUTES = {:controlGroup => :dsControlGroup, :dsLocation => :dsLocation, :altIDs => nil, :dsLabel => :dsLabel, :versionable => :dsVersionable, :dsState => :dsState, :formatURI => :dsFormatURI, :checksumType => :dsChecksumType, :checksum => :dsChecksum, :mimeType => :dsMIME, :logMessage => nil, :ignoreContent => nil, :lastModifiedDate => nil, :file => nil}
16
+ DS_ATTRIBUTES = {:controlGroup => :dsControlGroup, :dsLocation => :dsLocation, :altIDs => nil, :dsLabel => :dsLabel, :versionable => :dsVersionable, :dsState => :dsState, :formatURI => :dsFormatURI, :checksumType => :dsChecksumType, :checksum => :dsChecksum, :mimeType => :dsMIME, :logMessage => nil, :ignoreContent => nil, :lastModifiedDate => nil, :content => nil}
17
17
 
18
- define_attribute_methods DS_ATTRIBUTES.keys + [:content]
18
+ define_attribute_methods DS_ATTRIBUTES.keys
19
19
 
20
20
  # accessors for datastream attributes
21
21
  DS_ATTRIBUTES.each do |attribute, profile_name|
@@ -68,6 +68,8 @@ module Rubydora
68
68
  @content ||= repository.datastream_dissemination :pid => pid, :dsid => dsid
69
69
  rescue RestClient::ResourceNotFound
70
70
  end
71
+
72
+ (@content.read and @content.rewind if @content.is_a? IO) || @content
71
73
  end
72
74
  alias_method :read, :content
73
75
 
@@ -80,12 +82,9 @@ module Rubydora
80
82
  # Set the content of the datastream
81
83
  # @param [String or IO]
82
84
  # @return [String or IO]
83
- def content= content
85
+ def content= new_content
84
86
  content_will_change!
85
- @file = content
86
- @content = content.dup
87
- @content &&= @content.read if @content.respond_to? :read
88
- @content &&= @content.to_s if @content.respond_to? :read
87
+ @content = new_content
89
88
  end
90
89
 
91
90
  # Retrieve the datastream profile as a hash (and cache it)
@@ -151,9 +151,9 @@ module Rubydora
151
151
  def add_datastream options = {}
152
152
  pid = options.delete(:pid)
153
153
  dsid = options.delete(:dsid)
154
- file = options.delete(:file)
154
+ file = options.delete(:content)
155
155
  content_type = options.delete(:content_type) || options[:mimeType] || (MIME::Types.type_for(file.path).first if file.respond_to? :path) || 'text/plain'
156
- client[datastream_url(pid, dsid, options)].post file, :content_type => content_type.to_s
156
+ client[datastream_url(pid, dsid, options)].post file, :content_type => content_type.to_s, :multipart => true
157
157
  end
158
158
 
159
159
  # {include:RestApiClient::API_DOCUMENTATION}
@@ -164,9 +164,9 @@ module Rubydora
164
164
  def modify_datastream options = {}
165
165
  pid = options.delete(:pid)
166
166
  dsid = options.delete(:dsid)
167
- file = options.delete(:file)
167
+ file = options.delete(:content)
168
168
  content_type = options.delete(:content_type) || options[:mimeType] || (MIME::Types.type_for(file.path).first if file.respond_to? :path) || 'text/plain'
169
- client[datastream_url(pid, dsid, options)].put file, :content_type => content_type.to_s
169
+ client[datastream_url(pid, dsid, options)].put file, :content_type => content_type.to_s, :multipart => true
170
170
  end
171
171
 
172
172
  # {include:RestApiClient::API_DOCUMENTATION}
@@ -93,6 +93,13 @@ describe Rubydora::Datastream do
93
93
  @datastream.save
94
94
  end
95
95
 
96
+ it "should update the datastream when the content is changed" do
97
+ @mock_repository.should_receive(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('asdf')
98
+ @mock_repository.should_receive(:modify_datastream).with(hash_including(:content => 'test'))
99
+ @datastream.content = "test"
100
+ @datastream.save
101
+ end
102
+
96
103
  it "should be marked as changed when the content is updated" do
97
104
  @datastream.changed?.should be_false
98
105
  @mock_repository.should_receive(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('test')
metadata CHANGED
@@ -1,201 +1,155 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rubydora
3
- version: !ruby/object:Gem::Version
4
- hash: 19
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 4
10
- version: 0.1.4
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Chris Beer
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-10-04 00:00:00 -05:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
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"
12
+ date: 2011-10-05 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
31
15
  name: fastercsv
16
+ requirement: &2168473420 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
23
  prerelease: false
34
- requirement: *id001
35
- - !ruby/object:Gem::Dependency
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"
24
+ version_requirements: *2168473420
25
+ - !ruby/object:Gem::Dependency
45
26
  name: rest-client
27
+ requirement: &2168472960 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
46
33
  type: :runtime
47
34
  prerelease: false
48
- requirement: *id002
49
- - !ruby/object:Gem::Dependency
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"
35
+ version_requirements: *2168472960
36
+ - !ruby/object:Gem::Dependency
59
37
  name: nokogiri
38
+ requirement: &2168472500 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
60
44
  type: :runtime
61
45
  prerelease: false
62
- requirement: *id003
63
- - !ruby/object:Gem::Dependency
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"
46
+ version_requirements: *2168472500
47
+ - !ruby/object:Gem::Dependency
73
48
  name: mime-types
49
+ requirement: &2168472040 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
74
55
  type: :runtime
75
56
  prerelease: false
76
- requirement: *id004
77
- - !ruby/object:Gem::Dependency
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"
57
+ version_requirements: *2168472040
58
+ - !ruby/object:Gem::Dependency
87
59
  name: activesupport
60
+ requirement: &2168471620 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
88
66
  type: :runtime
89
67
  prerelease: false
90
- requirement: *id005
91
- - !ruby/object:Gem::Dependency
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"
68
+ version_requirements: *2168471620
69
+ - !ruby/object:Gem::Dependency
101
70
  name: activemodel
71
+ requirement: &2168471160 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
102
77
  type: :runtime
103
78
  prerelease: false
104
- requirement: *id006
105
- - !ruby/object:Gem::Dependency
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"
79
+ version_requirements: *2168471160
80
+ - !ruby/object:Gem::Dependency
115
81
  name: savon
82
+ requirement: &2168470720 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
116
88
  type: :runtime
117
89
  prerelease: false
118
- requirement: *id007
119
- - !ruby/object:Gem::Dependency
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"
90
+ version_requirements: *2168470720
91
+ - !ruby/object:Gem::Dependency
129
92
  name: rake
93
+ requirement: &2168470260 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
130
99
  type: :development
131
100
  prerelease: false
132
- requirement: *id008
133
- - !ruby/object:Gem::Dependency
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"
101
+ version_requirements: *2168470260
102
+ - !ruby/object:Gem::Dependency
143
103
  name: shoulda
104
+ requirement: &2168469760 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
144
110
  type: :development
145
111
  prerelease: false
146
- requirement: *id009
147
- - !ruby/object:Gem::Dependency
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"
112
+ version_requirements: *2168469760
113
+ - !ruby/object:Gem::Dependency
157
114
  name: bundler
115
+ requirement: &2168469320 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
158
121
  type: :development
159
122
  prerelease: false
160
- requirement: *id010
161
- - !ruby/object:Gem::Dependency
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"
123
+ version_requirements: *2168469320
124
+ - !ruby/object:Gem::Dependency
171
125
  name: rspec
126
+ requirement: &2153014860 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
172
132
  type: :development
173
133
  prerelease: false
174
- requirement: *id011
175
- - !ruby/object:Gem::Dependency
176
- version_requirements: &id012 !ruby/object:Gem::Requirement
177
- none: false
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- hash: 3
182
- segments:
183
- - 0
184
- version: "0"
134
+ version_requirements: *2153014860
135
+ - !ruby/object:Gem::Dependency
185
136
  name: yard
137
+ requirement: &2153014420 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
186
143
  type: :development
187
144
  prerelease: false
188
- requirement: *id012
189
- description: "Fedora Commons REST API ruby library : REQUIRES FCREPO 3.4+"
190
- email:
145
+ version_requirements: *2153014420
146
+ description: ! 'Fedora Commons REST API ruby library : REQUIRES FCREPO 3.4+'
147
+ email:
191
148
  - chris@cbeer.info
192
149
  executables: []
193
-
194
150
  extensions: []
195
-
196
151
  extra_rdoc_files: []
197
-
198
- files:
152
+ files:
199
153
  - .gitignore
200
154
  - Gemfile
201
155
  - LICENSE.txt
@@ -231,41 +185,37 @@ files:
231
185
  - spec/rest_api_client_spec.rb
232
186
  - spec/soap_spec.rb
233
187
  - spec/spec_helper.rb
234
- has_rdoc: true
235
188
  homepage: http://github.com/cbeer/rubydora
236
189
  licenses: []
237
-
238
190
  post_install_message:
239
191
  rdoc_options: []
240
-
241
- require_paths:
192
+ require_paths:
242
193
  - lib
243
- required_ruby_version: !ruby/object:Gem::Requirement
194
+ required_ruby_version: !ruby/object:Gem::Requirement
244
195
  none: false
245
- requirements:
246
- - - ">="
247
- - !ruby/object:Gem::Version
248
- hash: 3
249
- segments:
196
+ requirements:
197
+ - - ! '>='
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ segments:
250
201
  - 0
251
- version: "0"
252
- required_rubygems_version: !ruby/object:Gem::Requirement
202
+ hash: -3635636805451402877
203
+ required_rubygems_version: !ruby/object:Gem::Requirement
253
204
  none: false
254
- requirements:
255
- - - ">="
256
- - !ruby/object:Gem::Version
257
- hash: 3
258
- segments:
205
+ requirements:
206
+ - - ! '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ segments:
259
210
  - 0
260
- version: "0"
211
+ hash: -3635636805451402877
261
212
  requirements: []
262
-
263
213
  rubyforge_project:
264
- rubygems_version: 1.6.2
214
+ rubygems_version: 1.8.10
265
215
  signing_key:
266
216
  specification_version: 3
267
217
  summary: Fedora Commons REST API ruby library
268
- test_files:
218
+ test_files:
269
219
  - spec/datastream_spec.rb
270
220
  - spec/digital_object_spec.rb
271
221
  - spec/ext_model_loader_spec.rb