class StatusChecker::Check
Public Class Methods
new(email=["technical_root@mail.ru"], per=10, domain=["https://ukr.net", "https://yandex.ru"])
click to toggle source
# File lib/status_checker/check.rb, line 9 def initialize(email=["technical_root@mail.ru"], per=10, domain=["https://ukr.net", "https://yandex.ru"]) # initialize all instanse variables extend MonitorMixin @email = email @delay = per @domain = domain @timer = StatusChecker::Timer.new(@delay) @resp_stack = Hash.new end
Public Instance Methods
check_url(url)
click to toggle source
# File lib/status_checker/check.rb, line 38 def check_url(url) response = check_http_status_of(url) if response.code != 200.to_s && !recurrent_code?(url, response.code) add_code_to_resp_stack(response.code, url) send_email(url, response) end [url, response.code, response.message] end
start()
click to toggle source
# File lib/status_checker/check.rb, line 20 def start # run checker loop threads = [] @timer.start do @domain.each do |dom| threads << Thread.new(dom) do |url| check_url(url) end end threads.each { |thr| thr.join } end end
stop()
click to toggle source
# File lib/status_checker/check.rb, line 33 def stop # stop checker loop @timer.stop end
Private Instance Methods
add_code_to_resp_stack(code, url)
click to toggle source
# File lib/status_checker/check.rb, line 66 def add_code_to_resp_stack(code, url) synchronize do @resp_stack.merge!("#{code}" => url) end end
check_http_status_of(url)
click to toggle source
# File lib/status_checker/check.rb, line 49 def check_http_status_of(url) uri = URI.parse(url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == "https" request = Net::HTTP::Get.new(uri.request_uri) http.request(request) end
recurrent_code?(url, resp_code)
click to toggle source
# File lib/status_checker/check.rb, line 57 def recurrent_code?(url, resp_code) synchronize do @resp_stack.each_pair do |key, val| return true if key==resp_code && val==url end end return false end
send_email(url, resp)
click to toggle source
# File lib/status_checker/check.rb, line 72 def send_email(url, resp) StatusChecker::Email.new(@email).send(url, resp) end