Module: Cul::Hydra::Controllers::Helpers::ResourcesHelperBehavior
- Defined in:
- lib/cul_hydra/controllers/helpers/resources_helper_behavior.rb
Constant Summary collapse
- IMAGE_MIME_TYPES =
- [ 'image/bmp', 'image/gif', 'image/jpeg', 'image/png', 'image/tiff' ] 
Instance Method Summary collapse
- 
  
    
      #add_posted_blob_to_resource(file, resource = @resource)  ⇒ Resource 
    
    
  
  
  
  
  
  
  
  
  
    Puts the contents of params (posted blob) into a datastream within the given @resource Sets resource label and title to filename if they’re empty. 
- 
  
    
      #apply_posted_file_metadata(resource = @resource)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Apply any posted file metadata to the file asset. 
- 
  
    
      #associate_resource_with_container(resource = @resource, container_id = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Associate the new file resource with its container. 
- 
  
    
      #create_and_save_resources_from_params  ⇒ Resource 
    
    
  
  
  
  
  
  
  
  
  
    Creates a Resource, adding the posted blob to the Resource’s datastreams and saves the Resource. 
- #create_resource_from_file(file) ⇒ Object
- 
  
    
      #filename_for(file)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    A best-guess filename If Filename was submitted, it uses that. 
- #remove_resource_from_container(resource = nil, container_id = nil) ⇒ Object
- #update_resource_from_file(resource, file) ⇒ Object
- #update_resource_from_params ⇒ Object
Instance Method Details
#add_posted_blob_to_resource(file, resource = @resource) ⇒ Resource
Puts the contents of params (posted blob) into a datastream within the given @resource Sets resource label and title to filename if they’re empty
| 111 112 113 | # File 'lib/cul_hydra/controllers/helpers/resources_helper_behavior.rb', line 111 def add_posted_blob_to_resource(file, resource=@resource) resource.add_content_blob(file.tempfile, :file_name=>file.original_filename, :mime_type=>file.content_type) end | 
#apply_posted_file_metadata(resource = @resource) ⇒ Object
Apply any posted file metadata to the file asset
| 138 139 140 | # File 'lib/cul_hydra/controllers/helpers/resources_helper_behavior.rb', line 138 def (resource=@resource) @metadata_update_response = update_document(resource, @sanitized_params) end | 
#associate_resource_with_container(resource = @resource, container_id = nil) ⇒ Object
Associate the new file resource with its container
| 116 117 118 119 120 121 122 123 | # File 'lib/cul_hydra/controllers/helpers/resources_helper_behavior.rb', line 116 def associate_resource_with_container(resource=@resource, container_id=nil) if container_id.nil? container_id = params[:container_id] end container_id = "info:fedora/#{container_id}" unless container_id =~ /info:fedora\/.+/ resource.containers_append(container_id) resource.datastreams["RELS-EXT"].dirty = true end | 
#create_and_save_resources_from_params ⇒ Resource
Creates a Resource, adding the posted blob to the Resource’s datastreams and saves the Resource
| 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | # File 'lib/cul_hydra/controllers/helpers/resources_helper_behavior.rb', line 18 def create_and_save_resources_from_params if params.has_key?(:Fileurl) # parse url for file name, default to index.html file_url = params[:Fileurl] file_url = URI.parse(file_url) unless file_url.nil? file_name = 'index.html' if file_url.scheme file_name = file_url.path[1...file_url.path.length] end # download resource; override file name with header value if present blob = Tempfile.new('temp') blob.binmode # download header? buffered writing? response = Net::HTTP.get_response(file_url) blob.write response.body if response['Content-Disposition'] header = response['Content-Disposition'] if header =~ /filename=\"?(\w+)\"?/ file_name = $1 end end # add filename and resource to params params[:Filedata] = [ActionDispatch::Http::UploadedFile.new(:tempfile=>blob,:filename=>file_name,:type=>mime_type(file_name))] end if params.has_key?(:Filedata) @resources = [] params[:Filedata].each do |file| file.content_type = mime_type(file.original_filename) unless file.content_type @resource = create_resource_from_file(file) @resource.save @resources << @resource @resource.refresh add_posted_blob_to_resource(file, @resource) @resource.save end else render :text => "400 Bad Request", :status => 400 end @resources end | 
#create_resource_from_file(file) ⇒ Object
| 100 101 102 103 104 | # File 'lib/cul_hydra/controllers/helpers/resources_helper_behavior.rb', line 100 def create_resource_from_file(file) resource = Resource.new resource.datastreams["rightsMetadata"].ng_xml = Hydra::RightsMetadata.xml_template update_resource_from_file(resource,file) end | 
#filename_for(file) ⇒ Object
A best-guess filename If Filename was submitted, it uses that.  Otherwise, it calls original_filename on the posted file
| 145 146 147 | # File 'lib/cul_hydra/controllers/helpers/resources_helper_behavior.rb', line 145 def filename_for(file) file.instance_variable_get(:@original_filename) || file.original_filename end | 
#remove_resource_from_container(resource = nil, container_id = nil) ⇒ Object
| 125 126 127 128 129 130 131 132 133 134 135 | # File 'lib/cul_hydra/controllers/helpers/resources_helper_behavior.rb', line 125 def remove_resource_from_container(resource=nil, container_id=nil) if container_id.nil? container_id = params[:container_id] end if resource.nil? resource = @resource end resource.containers_remove(container_id) #resource.remove_relationship(:cul_member_of, container_id) resource.datastreams["RELS-EXT"].dirty = true end | 
#update_resource_from_file(resource, file) ⇒ Object
| 94 95 96 97 98 99 | # File 'lib/cul_hydra/controllers/helpers/resources_helper_behavior.rb', line 94 def update_resource_from_file(resource,file) file_name = filename_for(file) resource.label = file_name resource.datastreams["DC"].update_values([:source=>0]=>[file_name]) resource end | 
#update_resource_from_params ⇒ Object
| 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | # File 'lib/cul_hydra/controllers/helpers/resources_helper_behavior.rb', line 59 def update_resource_from_params if params.has_key?(:Fileurl) # parse url for file name, default to index.html file_url = params[:Fileurl] file_url = URI.parse(file_url) unless file_url.nil? file_name = 'index.html' if file_url.scheme file_name = file_url.path[1...file_url.path.length] end # download resource; override file name with header value if present blob = Tempfile.new('temp') blob.binmode # download header? buffered writing? response = Net::HTTP.get_response(file_url) blob.write response.body if response['Content-Disposition'] header = response['Content-Disposition'] if header =~ /filename=\"?(\w+)\"?/ file_name = $1 end end # add filename and resource to params params[:Filedata] = ActionDispatch::Http::UploadedFile.new(:tempfile=>blob,:filename=>file_name,:type=>mime_type(file_name)) end if params.has_key?(:Filedata) file = params[:Filedata] file.content_type = mime_type(file.original_filename) unless file.content_type update_resource_from_file(@document_fedora,file) add_posted_blob_to_resource(file, @document_fedora) @document_fedora.save else render :text => "400 Bad Request", :status => 400 end @document_fedora end |