class ServerStatusClient

Public Class Methods

new(hash) click to toggle source
# File lib/server_status/client.rb, line 6
def initialize(hash)
  @domain = hash[:domain.to_s]
  @port = hash[:port.to_s]
  @scheme = hash[:ssl.to_s] ? 'https' : 'http'
  @url = "#@scheme://#@domain:#@port"
  @default = hash[:apis.to_s][:default.to_s]
  @payload = @default[:payload.to_s]
  @payload ||= {}
end

Public Instance Methods

is_port_open?() click to toggle source

noinspection RubyResolve

# File lib/server_status/client.rb, line 55
def is_port_open?
  Timeout::timeout(1) do
    begin
      s = TCPSocket.new(@domain, @port)
      s.close
      return true
    rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
      return false
    end
  end
rescue Timeout::Error
  return false
end
request() click to toggle source
# File lib/server_status/client.rb, line 16
def request
  header, method, params = parse_params
  Timeout::timeout(5) do
    begin
      case method 
      when :get
        header[:params] = params
        response = RestClient.get "#@url#{@default[:url.to_s]}", header
      when :post
        response = RestClient.post "#@url#{@default[:url.to_s]}", params.to_json, header
      end
      response.code
    rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
      return 503
    rescue => e
      e.response.code
    end
  end
rescue Timeout::Error
  return 408
end

Private Instance Methods

parse_params() click to toggle source
# File lib/server_status/client.rb, line 38
def parse_params
  header = {}
  method = :get
  params = {}
  if @payload.has_key? :header.to_s
    header = @payload[:header.to_s]
  end
  if @payload.has_key? :method.to_s
    method = @payload[:method.to_s].downcase.to_sym
  end
  if @payload.has_key? :params.to_s
    params = @payload[:params.to_s]
  end
  [header, method, params]
end