Sha256: 7412d82fae327ef0d21cf421be3c83f8c5e4ab46caa8b9451b66422b167981a9

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

class ServerStatusApp < Sinatra::Base
  set :root, GEM_ROOT
  set :server, :thin

  class << self
    def check server
      server_config = ServerStatusConfig.servers[server.to_sym]
      client = ServerStatusClient.new server_config
      status_code = client.request.to_s
      Status.new server, server_config[:description.to_s], status_code, client.is_port_open?
    end
  end

  get '/' do
    @server_status = ServerStatusConfig.servers.keys.collect do |server|
      ServerStatusApp.check server
    end

    slim :index
  end

  get '/servers' do
    result = []
    ServerStatusConfig.servers.each do |k, v|
      result.push({name: k, description: v[:description.to_s]})
    end

    result.to_json
  end

  get '/:server/status' do
    ServerStatusApp.check(params[:server].to_sym).to_json
  end

  class Status
    attr_reader :code, :name, :description

    def initialize name, description, code, is_open
      @code, @name, @description, @is_open = code.to_i, name, description, is_open
    end

    def is_open?
      @is_open
    end

    def to_json
      {name: @name, code: @code, description: @description, is_open: @is_open}.to_json
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
server_status-0.1.1 lib/server_status/app.rb