class SitemapCheck::Page

Attributes

error[R]
exists[R]
logger[RW]
request[RW]
uri[RW]

Public Class Methods

new(url, logger = Logger.new) click to toggle source
# File lib/sitemap_check/page.rb, line 10
def initialize(url, logger = Logger.new)
  self.uri = URI(url)
  self.logger = logger

  replace_host

  self.request = Typhoeus::Request.new(
    self.url,
    method: request_method,
    followlocation: true,
  )

  setup_callbacks
end

Public Instance Methods

url() click to toggle source
# File lib/sitemap_check/page.rb, line 27
def url
  uri.to_s
end

Protected Instance Methods

replace_host() click to toggle source
# File lib/sitemap_check/page.rb, line 36
def replace_host
  return unless (host = ENV["REPLACEMENT_HOST"])
  uri.host = host
end
request_method() click to toggle source
# File lib/sitemap_check/page.rb, line 59
def request_method
  validate? ? :get : :head
end
setup_callbacks() click to toggle source
# File lib/sitemap_check/page.rb, line 41
def setup_callbacks # rubocop:disable Metrics/AbcSize
  request.on_complete do |response|
    if response.success?
      validate(response)
      @exists = true
    elsif response.timed_out?
      @exists = true
      logger.log "  warning: request to #{url} timed out".magenta
    elsif response.code == 404
      @exists = false
      logger.log "  missing: #{url}".magenta
    else
      @error = true
      logger.log "  error: (#{response.code}) while connecting to #{url}".magenta
    end
  end
end
validate(response) click to toggle source
# File lib/sitemap_check/page.rb, line 63
def validate(response)
  Validator.new(response, logger).validate if validate?
end
validate?() click to toggle source
# File lib/sitemap_check/page.rb, line 67
def validate?
  ENV["VALIDATE"]
end