lib/paperclip-fedora.rb in paperclip-fedora-0.2.0 vs lib/paperclip-fedora.rb in paperclip-fedora-0.2.1
- old
+ new
@@ -12,12 +12,22 @@
if(!@options[:fedora_config])
@options[:fedora_config] = config_file
end
@fedora_config = parse_config(@options[:fedora_config])
- @url = @fedora_config[:host] + "/objects/upload\::id/datastreams/:style/content"
- @path = "upload\::id"
+ @path = ":basename_clean\::id"
+ @url = @fedora_config[:host] + "/objects/#{@path}/datastreams/:style/content"
+
+ Paperclip.interpolates(:basename_clean) do |attachment, style|
+ s = File.basename(attachment.original_filename, File.extname(attachment.original_filename))
+ s.downcase!
+ s.gsub!(/'/, '')
+ s.gsub!(/[^A-Za-z0-9:\-]+/, ' ')
+ s.strip!
+ s.gsub!(/\ +/, '-')
+ s
+ end unless Paperclip::Interpolations.respond_to? :basename_clean
end
end
def exists?(style=default_style)
exists_bool = !fedora_object.datastreams[style.to_s].new?
@@ -37,11 +47,11 @@
def flush_writes
@queued_for_write.each do |style, file|
ds = fedora_object.datastreams[style.to_s]
ds.controlGroup = 'M'
ds.file = file
- ds.dsLabel = "TempFile"
+ ds.dsLabel = "#{File.extname(file)} file"
ds.save
log("Added #{style} datastream to #{@object_id}")
end
@queued_for_write = {}
end
@@ -59,19 +69,15 @@
def fedora
@@repo ||= Rubydora.connect url: @fedora_config[:host], user: @fedora_config[:user], password: @fedora_config[:password]
@@repo
end
- def create_object
+ def fedora_object
@object_id = path()
object = fedora.find(@object_id)
object.label = @object_id
saved_object = object.save
saved_object
- end
-
- def fedora_object
- @fedora_object ||= create_object
end
def parse_config config
config = find_credentials(config).stringify_keys
(config[Rails.env] || config).symbolize_keys