Sha256: c6d3f16d63e7ab608629e1d0c2cbf5488fc57722b9eb0b8cc80349e56294c601

Contents?: true

Size: 1.67 KB

Versions: 1

Compression:

Stored size: 1.67 KB

Contents

require 'awesome_bot/white_list'

# Result
module AwesomeBot
  # Result
  class Result
    attr_accessor :dupes
    attr_accessor :skip_dupe
    attr_accessor :status
    attr_accessor :white_listed

    attr_reader :rejected
    attr_reader :links

    def initialize(links, white_list_from_cli)
      @links = links
      @w = white_list_from_cli

      return if @w.nil?
      @rejected, @links = links.partition { |u| AwesomeBot.white_list @w, u }
    end

    def statuses_issues(allow_redirects = false, allow_timeouts = false)
      s = status.select { |x| x['status'] != 200 }
      r = s.reject { |x| (x['status'] > 299) && (x['status'] < 400) }
      t = s.reject do |x|
        (x['status'] == -1) && ((x['error'].message == 'Net::ReadTimeout') || (x['error'].message == 'execution expired'))
      end

      if (allow_redirects == false) && (allow_timeouts == false)
        return s
      elsif (allow_redirects == true) && (allow_timeouts == false)
        return r
      elsif (allow_redirects == false) && (allow_timeouts == true)
        return t
      else
        return r.reject do |x|
          (x['status'] == -1) && ((x['error'].message == 'Net::ReadTimeout') || (x['error'].message == 'execution expired'))
        end
      end
    end

    def success(allow_redirects = false, allow_timeouts = false)
      success_dupe && success_links(allow_redirects, allow_timeouts)
    end

    def success_dupe
      return true if skip_dupe
      links.uniq.count == links.count
    end

    def success_links(allow_redirects = false, allow_timeouts = false)
      statuses_issues(allow_redirects, allow_timeouts).count == 0
    end

    def white_listing
      !@w.nil?
    end
  end # class
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
awesome_bot-1.4.0 lib/awesome_bot/result.rb