Sha256: d5d47c3949d13c7e8f23e57df12a1ae1f1b713598901ca610e03c5c5d5b6685c

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module LinkChecker
  class Checker
    include LinkChecker::Config
    include LinkChecker::Callbacks

    attr_reader :results
    attr_accessor(*Config::ATTRIBUTES)

    def initialize(options = {})
      LinkChecker::Config::ATTRIBUTES.each do |key|
        send("#{key}=", options[key] || LinkChecker.config.send(key))
      end
      raise ArgumentError, "Missing methods." if methods&.none?
      @logger ||= options[:logger] || LinkChecker::Config.logger || LinkChecker::Logger.default
      @results = { error: [], failure: [], success: [] } unless options.key?(:results) && !options[:results]
    end

    def task_klass
      @task_klass ||= begin
        module_name = self.class.name.split("::")[...-1].join('::')
        Object.const_get("#{module_name}::Task")
      end
    end

    def check(uri, options = {})
      tasks = Tasks.new(
        self,
        task_klass,
        uri,
        methods,
        options
      )
      tasks.on do |event, *args|
        results[event] << args.first if @results && %i[error failure success].include?(event)
        callback event, *args
      end
      tasks.execute!
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ruby-link-checker-0.2.0 lib/ruby-link-checker/checker.rb
ruby-link-checker-0.1.0 lib/ruby-link-checker/checker.rb