class GitHubPages::HealthCheck::Repository

def build_duration

def build_duration
  last_build&.duration
end

def build_error

def build_error
  last_build.error["message"] unless built?
end

def built?

def built?
  last_build && last_build.status == "built"
end

def check!

def check!
  raise Errors::BuildError.new(:repository => self), build_error unless built?
  true
end

def client

def client
  raise Errors::MissingAccessTokenError if @access_token.nil?
  @client ||= Octokit::Client.new(:access_token => @access_token)
end

def cname

def cname
  pages_info.cname
end

def domain

def domain
  return if cname.nil?
  @domain ||= GitHubPages::HealthCheck::Domain.redundant(cname)
end

def initialize(name_with_owner, access_token: nil)

def initialize(name_with_owner, access_token: nil)
  unless name_with_owner.match(REPO_REGEX)
    raise Errors::InvalidRepositoryError
  end
  parts = name_with_owner.split("/")
  @owner = parts.first
  @name  = parts.last
  @access_token = access_token || ENV["OCTOKIT_ACCESS_TOKEN"]
end

def last_build

def last_build
  @last_build ||= client.latest_pages_build(name_with_owner)
end

def last_built

def last_built
  last_build&.updated_at
end

def name_with_owner

def name_with_owner
  @name_with_owner ||= [owner, name].join("/")
end

def pages_info

def pages_info
  @pages_info ||= client.pages(name_with_owner)
end