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



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

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

#contentObject



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

def content
  external? && !new? ? File.read(file_path) : super
end

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



55
56
57
58
# File 'lib/ddr/datastreams/external_file_datastream.rb', line 55

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



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

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

#file_path=(path) ⇒ Object



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

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

#file_pathsObject



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

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

#file_sizeObject



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

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

#generate_file_nameObject



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

def generate_file_name
  SecureRandom.uuid
end

#generate_stored_pathObject



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

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