module Hcheck::Checks::Ping

ping check module implements status include ping check dependencies returns ok only if the response code is 2** or 3**

Public Class Methods

included(_base) click to toggle source
# File lib/hcheck/checks/ping.rb, line 20
def self.included(_base)
  require 'net/http'
end

Public Instance Methods

build_request(url) click to toggle source
# File lib/hcheck/checks/ping.rb, line 24
def build_request(url)
  req = Net::HTTP.new(url.host, url.port)
  req.use_ssl = true if url.scheme == 'https'
  req.read_timeout = 5 # seconds

  url.path = '/' if url.path.empty?
  req
end
fail_with(response, url) click to toggle source
# File lib/hcheck/checks/ping.rb, line 33
def fail_with(response, url)
  raise Hcheck::Errors::HTTPError,
        [response.class, response.code, response.message].join(' ') + " from #{url}"
end
status(config) click to toggle source

@config { url }

# File lib/hcheck/checks/ping.rb, line 9
def status(config)
  url = URI.parse(config[:url])
  request = build_request(url)

  res = request.request_head(url.path)

  ok_responses = [Net::HTTPSuccess, Net::HTTPInformation, Net::HTTPMovedPermanently]

  fail_with(res, url) unless ok_responses.include?(res.class)
end