Class: Ddr::Datastreams::ExternalFileDatastream

Inherits:
ActiveFedora::Datastream
  • Object
show all
Defined in:
lib/ddr/datastreams/external_file_datastream.rb

Constant Summary collapse

FILE_PERMISSIONS =
0644

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.default_attributesObject



12
13
14
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 12

def self.default_attributes
  super.merge(controlGroup: "E")
end

Instance Method Details

#add_file(source_path, mime_type: nil) ⇒ Object



22
23
24
25
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 22

def add_file(source_path, mime_type: nil)
  set_mime_type(source_path, mime_type)
  store(source_path)
end

#file_pathObject



27
28
29
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 27

def file_path
  Ddr::Utils.path_from_uri(dsLocation) if dsLocation
end

#file_path=(path) ⇒ Object



31
32
33
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 31

def file_path=(path)
  self.dsLocation = Ddr::Utils.path_to_uri(path)
end

#file_pathsObject



45
46
47
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 45

def file_paths
  new? ? Array(file_path) : versions.map(&:file_path)
end

#file_sizeObject



16
17
18
19
20
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 16

def file_size
  if path = file_path
    File.size(path)
  end
end

#generate_file_nameObject



35
36
37
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 35

def generate_file_name
  SecureRandom.uuid
end

#generate_stored_pathObject



39
40
41
42
43
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 39

def generate_stored_path
  file_name = generate_file_name
  subpath = File.join([0, 2, 4, 6].map { |i| file_name[i, 2] })
  File.join(file_store, subpath, file_name)
end