Sha256: 6a9295053a86f1490e82f1c5704088477fb12fb0052ff13a1b833258316b6dfc

Contents?: true

Size: 1.19 KB

Versions: 6

Compression:

Stored size: 1.19 KB

Contents

# To enable local file ingest,
# - Make User model define .directory method that returns a String corresponding to the User's personal import directory on the server. This can be a simple ActiveRecord attribute on the User model, or it can be something more elaborate.
# - Include this module in your User model, or define a .files() method that behaves the same
# - Set Sufia.config.enable_local_ingest to true
#
module Sufia::UserLocalDirectoryBehavior
  # You can use this validator in your User model.
  # Ensures that a string defining the path to the user's directory has been provided
  # and corresponds to a real directory on the server.
  # @example
  #   validate :directory_must_exist
  def directory_must_exist
    return if directory.blank? || File.directory?(directory)
    errors.add(:directory, "must be an existing directory")
  end

  # List the contents of the user's directory on the server
  # Indicates whether each item is a directory or not.
  def files
    return [] unless directory.present? && File.directory?(directory)
    Dir[File.join(directory, '*')].each_with_object([]) do |val, accum|
      accum << { name: File.basename(val), directory: File.directory?(val) }
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
sufia-models-6.7.0 lib/sufia/models/user_local_directory_behavior.rb
sufia-models-6.6.1 lib/sufia/models/user_local_directory_behavior.rb
sufia-models-6.6.0 lib/sufia/models/user_local_directory_behavior.rb
sufia-models-6.5.0 lib/sufia/models/user_local_directory_behavior.rb
sufia-models-6.4.0 lib/sufia/models/user_local_directory_behavior.rb
sufia-models-6.3.0 lib/sufia/models/user_local_directory_behavior.rb