class GitHubPages::HealthCheck::Printer

Constants

PRETTY_JOINER
PRETTY_LEFT_WIDTH

Attributes

health_check[R]

Public Class Methods

new(health_check) click to toggle source
# File lib/github-pages-health-check/printer.rb, line 11
def initialize(health_check)
  @health_check = health_check
end

Public Instance Methods

ljust(line) click to toggle source
# File lib/github-pages-health-check/printer.rb, line 87
def ljust(line)
  line.ljust(PRETTY_LEFT_WIDTH)
end
new_line(left = nil, right = nil) click to toggle source
# File lib/github-pages-health-check/printer.rb, line 77
def new_line(left = nil, right = nil)
  if left && right
    ljust(left) + PRETTY_JOINER + right
  elsif left
    ljust(left)
  elsif right
    " " * (PRETTY_LEFT_WIDTH + PRETTY_JOINER.size) + right
  end
end
pretty_print() click to toggle source
# File lib/github-pages-health-check/printer.rb, line 22
def pretty_print
  values = health_check.to_hash
  output = StringIO.new

  # Header
  output.puts new_line "Domain", (values[:uri]).to_s
  output.puts "-" * (PRETTY_LEFT_WIDTH + 1) + "|" + "-" * 50

  output.puts new_line "DNS", "does not resolve" unless values[:dns_resolves?]

  # Valid?
  output.write new_line "State", (values[:valid?] ? "valid" : "invalid").to_s
  output.puts " - is #{"NOT " unless values[:served_by_pages?]}served by Pages"

  # What's wrong?
  output.puts new_line "Reason", (values[:reason]).to_s unless values[:valid?]

  if values[:pointed_to_github_user_domain?]
    output.puts new_line nil, "pointed to user domain"
  end

  if values[:pointed_to_github_pages_ip?]
    output.puts new_line nil, "pointed to pages IP"
  end

  # DNS Record info
  record_type = if values[:a_record?]
                  "A"
                elsif values[:cname_record?]
                  "CNAME"
                else
                  "other"
                end
  output.write new_line "Record Type", record_type
  should_be = values[:should_be_a_record?] ? "A record" : "CNAME"
  output.puts ", should be #{should_be}"

  ip_problems = []
  ip_problems << "not apex domain" unless values[:apex_domain?]
  ip_problems << "invalid domain" unless values[:valid_domain?]
  ip_problems << "old ip address used" if values[:old_ip_address?]

  ip_problems_string = !ip_problems.empty? ? ip_problems.join(", ") : "none"
  output.puts new_line "IP Problems", ip_problems_string

  if values[:proxied?]
    proxy = values[:cloudflare_ip?] ? "CloudFlare" : "unknown"
    output.puts new_line "Proxied", "yes, through #{proxy}"
  end

  output.puts new_line "Domain", "*.github.com/io domain" if values[:pages_domain?]

  output.string
end
simple_string() click to toggle source
# File lib/github-pages-health-check/printer.rb, line 15
def simple_string
  require "yaml"
  hash = health_check.to_hash
  hash[:reason] = hash[:reason].to_s if hash[:reason]
  hash.to_yaml.sub(/\A---\n/, "").gsub(/^:/, "")
end