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