module ActiveFedora::AttachedFiles
def accessor_name(file_path)
def accessor_name(file_path) file_path.tr('-', '_') end
def add_file(file, opts)
(**opts)
-
:original_name
(String
) -- The original name of the file (used for Content-Disposition) -
:mime_type
(String
) -- The Mime-Type of the file -
:prefix
(String
) -- The path prefix (for auto-generated path) -
:path
(String
) -- The file path
Parameters:
-
args
(Hash
) -- options: :dsid, :prefix, :mime_type -
file
(IO, String
) -- the file to add
def add_file(file, opts) find_or_create_child_resource(opts[:path], opts[:prefix]).tap do |node| node.content = file node.mime_type = opts[:mime_type] node.original_name = opts[:original_name] end end
def attach_file(file, file_path, _opts = {})
-
(String)
- path of the added datastream
Parameters:
-
_opts
(Hash
) -- -
file_path
(String
) -- -
file
(ActiveFedora::File
) --
def attach_file(file, file_path, _opts = {}) create_singleton_association(file_path) attached_files[file_path] = file file_path end
def attached_files
Attached files that have been modified in memory are given preference over
saved to fedora, the persisted files will be included.
Returns all known attached files for the object. If the object has been
def attached_files @attached_files ||= FilesHash.new(self) end
def clear_attached_files
def clear_attached_files @attached_files = nil end
def contains_assertions
def contains_assertions resource.query({ subject: resource, predicate: ::RDF::Vocab::LDP.contains }).objects.map(&:to_s) end
def create_singleton_association(file_path)
def create_singleton_association(file_path) undeclared_files << file_path.to_sym association = Associations::HasSubresourceAssociation.new(self, Reflection::HasSubresourceReflection.new(file_path, nil, { class_name: 'ActiveFedora::File' }, self.class)) @association_cache[file_path.to_sym] = association singleton_class.send :define_method, accessor_name(file_path) do @association_cache[file_path.to_sym].reader end association end
def declared_attached_files
def declared_attached_files result = {} attached_files.reflections.keys.each do |k| result[k] = attached_files[k] end result end
def find_or_create_child_resource(path, prefix)
def find_or_create_child_resource(path, prefix) association = association(path.to_sym) if path association ||= begin file_path = FilePathBuilder.build(self, path, prefix) create_singleton_association(file_path) end association.reader end
def load_attached_files
because we are going to find the subresource by knowing it's subpath ahead of time.
Load any undeclared relationships or has_subresource relationships. These are non-idiomatic LDP
def load_attached_files return if reflections[:contains] && reflections[:contains].macro == :is_a_container contains_assertions.each do |file_uri| path = file_uri.to_s.sub(uri + '/', '') next if association(path.to_sym) create_singleton_association(path) end end
def metadata_streams
-
(Array)
- all attached files that return true for `metadata?` and are not Rels-ext
def metadata_streams attached_files.select { |_k, ds| ds.metadata? }.values end
def serialize_attached_files
def serialize_attached_files declared_attached_files.each_value(&:serialize!) end
def undeclared_files
def undeclared_files @undeclared_files ||= [] end