Module: ActiveFedora::AttachedFiles
- Extended by:
- ActiveSupport::Concern
- Included in:
- Base
- Defined in:
- lib/active_fedora/attached_files.rb
Instance Method Summary collapse
-
#add_file(file, opts) ⇒ Object
Attach the given stream/string to object.
-
#attach_file(file, file_path, _opts = {}) ⇒ String
Add an ActiveFedora::File to the object.
-
#attached_files ⇒ Object
Returns all known attached files for the object.
- #clear_attached_files ⇒ Object
- #contains_assertions ⇒ Object
-
#declared_attached_files ⇒ Object
Returns only the attached_files that are declared with ‘contains’.
-
#load_attached_files ⇒ Object
Load any undeclared relationships or has_subresource relationships.
-
#metadata_streams ⇒ Array
All attached files that return true for ‘metadata?` and are not Rels-ext.
- #serialize_attached_files ⇒ Object
- #undeclared_files ⇒ Object
Instance Method Details
#add_file(file, opts) ⇒ Object
Attach the given stream/string to object
76 77 78 79 80 81 82 |
# File 'lib/active_fedora/attached_files.rb', line 76 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 |
#attach_file(file, file_path, _opts = {}) ⇒ String
Add an ActiveFedora::File to the object.
53 54 55 56 57 |
# File 'lib/active_fedora/attached_files.rb', line 53 def attach_file(file, file_path, _opts = {}) create_singleton_association(file_path) attached_files[file_path] = file file_path end |
#attached_files ⇒ Object
Returns all known attached files for the object. If the object has been saved to fedora, the persisted files will be included. Attached files that have been modified in memory are given preference over the copy in Fedora.
24 25 26 |
# File 'lib/active_fedora/attached_files.rb', line 24 def attached_files @attached_files ||= FilesHash.new(self) end |
#clear_attached_files ⇒ Object
28 29 30 |
# File 'lib/active_fedora/attached_files.rb', line 28 def clear_attached_files @attached_files = nil end |
#contains_assertions ⇒ Object
32 33 34 |
# File 'lib/active_fedora/attached_files.rb', line 32 def contains_assertions resource.query(subject: resource, predicate: ::RDF::Vocab::LDP.contains).objects.map(&:to_s) end |
#declared_attached_files ⇒ Object
Returns only the attached_files that are declared with ‘contains’
10 11 12 13 14 |
# File 'lib/active_fedora/attached_files.rb', line 10 def declared_attached_files attached_files.reflections.keys.each_with_object({}) do |k, h| h[k] = attached_files[k] end end |
#load_attached_files ⇒ Object
Load any undeclared relationships or has_subresource relationships. These are non-idiomatic LDP because we are going to find the subresource by knowing it’s subpath ahead of time. Does nothing if this object is using idiomatic basic containment, by declaring ‘is_a_container`
39 40 41 42 43 44 45 46 |
# File 'lib/active_fedora/attached_files.rb', line 39 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 |
#metadata_streams ⇒ Array
Returns all attached files that return true for ‘metadata?` and are not Rels-ext.
60 61 62 |
# File 'lib/active_fedora/attached_files.rb', line 60 def attached_files.select { |_k, ds| ds. }.values end |
#serialize_attached_files ⇒ Object
5 6 7 |
# File 'lib/active_fedora/attached_files.rb', line 5 def serialize_attached_files declared_attached_files.each_value(&:serialize!) end |
#undeclared_files ⇒ Object
84 85 86 |
# File 'lib/active_fedora/attached_files.rb', line 84 def undeclared_files @undeclared_files ||= [] end |