class Heartcheck::Checks::Webservice
Check for a webservice service Base is set in heartcheck gem
Constants
- DEFAULT_OPEN_TIMEOUT
- DEFAULT_READ_TIMEOUT
Public Instance Methods
list services uri info
@return [Array]
# File lib/heartcheck/checks/webservice.rb, line 18 def uri_info services.map do |s| uri = URI(s[:url]) { host: uri.host, port: uri.port, scheme: uri.scheme } end end
validate each service
@retun [void]
# File lib/heartcheck/checks/webservice.rb, line 9 def validate services.each do |service| execute service end end
Private Instance Methods
customize the error message It's called in Heartcheck::Checks::Base#append_error
@param name [String] An identifier of service @param key_error [Symbol] name of action
@return [void]
# File lib/heartcheck/checks/webservice.rb, line 42 def custom_error(name, key_error) @errors << "#{name} fails to #{key_error}" end
execute and validation request
@param service [Hash] An identifier of service
@return [void]
# File lib/heartcheck/checks/webservice.rb, line 51 def execute(service) response = request_for(service) error = valid?(response, service) append_error(service, error) if error rescue SocketError append_error service, 'inaccessible' rescue Timeout::Error append_error service, 'timeout' rescue => e append_error service, e.message end
execute request
@param service [Hash] An identifier of service
@return [Net:HTTP]
# File lib/heartcheck/checks/webservice.rb, line 101 def request_for(service) Heartcheck::Webservice::HttpClient.new( service[:url], service[:proxy], service[:ignore_ssl_cert], service[:headers], service.fetch(:open_timeout, DEFAULT_OPEN_TIMEOUT), service.fetch(:read_timeout, DEFAULT_READ_TIMEOUT) ).get end
validate response
@param response [Net:HTTP] HTTP response @param service [Hash] An identifier of service
@return [String]
# File lib/heartcheck/checks/webservice.rb, line 70 def valid?(response, service) return nil if valid_status?(response) && valid_body?(response, service) 'unexpected_response' end
validate if response body contains body_match params
@param response [Net:HTTP] HTTP response @param service [Hash] An identifier of service
@return [Bollean]
# File lib/heartcheck/checks/webservice.rb, line 90 def valid_body?(response, service) return true unless service[:body_match] response.body =~ service[:body_match] end
validate if response is Net::HTTPSuccess
@param response [Net:HTTP] HTTP response
@return [Bollean]
# File lib/heartcheck/checks/webservice.rb, line 80 def valid_status?(response) response.is_a?(Net::HTTPSuccess) end