class AwesomeBot::Result

Result

Attributes

dupes[RW]
skip_dupe[RW]
status[RW]
white_listed[RW]

Public Class Methods

new(links, white_list_from_cli) click to toggle source
# File lib/awesome_bot/result.rb, line 15
def initialize(links, white_list_from_cli)
  @links = links
  @w = white_list_from_cli

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

Public Instance Methods

statuses_issues(options=nil) click to toggle source
# File lib/awesome_bot/result.rb, line 24
def statuses_issues(options=nil)
  options = {
    'timeout'=>false,
    'ssl'=>false,
    'redirect'=>false
  } if options.nil?

  s = status.select { |x| x['status'] != 200 }

  if options['timeout']
    s = s.reject do |x|
      ( (x['error'].message == 'Net::ReadTimeout') || (x['error'].message == 'execution expired') || (x['error'].message.include? 'timed out') ) unless x['error'].nil?
    end
  end

  if options['redirect']
    s = s.reject { |x| AwesomeBot.status_is_redirected? x['status'] }
  end

  if options['ssl']
    s =  s.reject do |x|
      ( (x['error'].message.include? 'server certificate') || (x['error'].message.include? 'SSL_connect') ) unless x['error'].nil?
    end
  end

  unless options['errors'].nil?
    options['errors'].each do |c|
      s = s.reject { |x| x['status']==c.to_i }
    end
  end

  s
end
success(options) click to toggle source
# File lib/awesome_bot/result.rb, line 58
def success(options)
  success_dupe && success_links(options)
end
success_dupe() click to toggle source
# File lib/awesome_bot/result.rb, line 62
def success_dupe
  return true if skip_dupe
  links.uniq.count == links.count
end
white_listing() click to toggle source
# File lib/awesome_bot/result.rb, line 71
def white_listing
  !@w.nil?
end
write(filename) click to toggle source
# File lib/awesome_bot/result.rb, line 75
def write(filename)
  require 'json'

  r = write_artifacts
  File.open(filename, 'w') { |f| f.write JSON.pretty_generate(r) }
end
write_artifacts() click to toggle source
# File lib/awesome_bot/result.rb, line 82
def write_artifacts
  require 'date'
  {
    'date'=>Time.now,
    'links'=>@links,
    'issues'=>statuses_issues,
    'all'=>status
  }
end