class SitemapCheck::Validator

Constants

LIMIT

Attributes

message_count[RW]
logger[RW]
response[RW]

Public Class Methods

new(response, logger = Logger.new) click to toggle source
# File lib/sitemap_check/validator.rb, line 14
def initialize(response, logger = Logger.new)
  self.logger = logger
  self.response = response
  self.class.message_count ||= 0
end

Public Instance Methods

validate() click to toggle source
# File lib/sitemap_check/validator.rb, line 20
def validate
  validator = W3CValidators::NuValidator.new
  result = validator.validate_text(response.body)
  return if result.errors.empty? && result.warnings.empty?

  log_url
  log_errors(result)
  log_warnings(result)
  fail_if_too_many_messages
end

Private Instance Methods

fail_if_too_many_messages() click to toggle source
# File lib/sitemap_check/validator.rb, line 56
def fail_if_too_many_messages
  error = "Stopping because there are more than #{LIMIT} messages."
  fail error if self.class.message_count > LIMIT
end
log_errors(result) click to toggle source
# File lib/sitemap_check/validator.rb, line 38
def log_errors(result)
  result.errors.each do |e|
    logger.log "  ERROR: #{e.message}".red
    logger.log "         #{e.source.inspect}"

    self.class.message_count += 1
  end
end
log_url() click to toggle source
# File lib/sitemap_check/validator.rb, line 33
def log_url
  logger.log "-" * 80
  logger.log response.effective_url.cyan
end
log_warnings(result) click to toggle source
# File lib/sitemap_check/validator.rb, line 47
def log_warnings(result)
  result.warnings.each do |w|
    logger.log "  WARNING: #{w.message}".yellow
    logger.log "           #{w.source.inspect}"

    self.class.message_count += 1
  end
end