module Hyrax::Ingest::Fetcher

Public Class Methods

all_classes() click to toggle source

@return Set The set of all fetcher classes.

# File lib/hyrax/ingest/fetcher.rb, line 15
def all_classes
  @all_classes ||= Set.new.tap do |all_classes|
    all_classes << Hyrax::Ingest::Fetcher::XMLFile
    all_classes << Hyrax::Ingest::Fetcher::YAMLFile
    all_classes << Hyrax::Ingest::Fetcher::CSVFile
    all_classes << Hyrax::Ingest::Fetcher::Literal
    all_classes << Hyrax::Ingest::Fetcher::PremisEventType
    all_classes << Hyrax::Ingest::Fetcher::RdfUri
    all_classes << Hyrax::Ingest::Fetcher::DateTime
  end
end
factory(class_name, options={}) click to toggle source

@param [string] options The key is the fetcher class name

and the value is the hash of options to pass to the constructor of the fetcher
class.

@return An instance of the fetcher class.

# File lib/hyrax/ingest/fetcher.rb, line 31
def factory(class_name, options={})
  options ||= {}
  find_class_by_name(class_name).new(options)
end
find_class_by_name(class_name) click to toggle source

@param [String] class_name The stringified class name, with our

without namespaces.

@raise [Hyrax::Ingest::Errors::UnknownFetcherClass] When there is no

corresponding fetcher class for the given value of the `class_name`
param.

@raise [Hyrax::Ingest::Errors::UnknownfetcherClass] When the value of

`class_name` param is insufficient in determining a fetcher class.

@return [Class] The appropriate fetcher class.

# File lib/hyrax/ingest/fetcher.rb, line 44
def find_class_by_name(class_name)
  found_classes = all_classes.select do |class_const|
    (class_const.to_s == class_name) || (class_const.to_s =~ /::#{class_name}/)
  end
  raise Hyrax::Ingest::Errors::UnknownFetcherClass.new(class_name, all_classes) if found_classes.count == 0
  raise Hyrax::Ingest::Errors::AmbiguousFetcherClass.new(class_name, found_classes) if found_classes.count > 1
  found_classes.first
end