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



14
15
16
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 14

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

Instance Method Details

#add_file(source_path, mime_type: nil) ⇒ Object



24
25
26
27
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 24

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

#content_digest(algorithm = Ddr::Datastreams::CHECKSUM_TYPE_SHA1) ⇒ Object



51
52
53
54
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 51

def content_digest(algorithm=Ddr::Datastreams::CHECKSUM_TYPE_SHA1)
  digest_class = Digest.const_get(algorithm.sub("-", ""))
  digest_class.file(file_path).hexdigest
end

#file_pathObject



29
30
31
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 29

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

#file_path=(path) ⇒ Object



33
34
35
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 33

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

#file_pathsObject



47
48
49
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 47

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

#file_sizeObject



18
19
20
21
22
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 18

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

#generate_file_nameObject



37
38
39
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 37

def generate_file_name
  SecureRandom.uuid
end

#generate_stored_pathObject



41
42
43
44
45
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 41

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