Class: Rack::HaproxyStatus::Endpoint

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/haproxy_status.rb

Constant Summary collapse

InvalidStatus =
Class.new(StandardError)
VALID_STATES =
%w(on off)

Instance Method Summary collapse

Constructor Details

#initialize(path:, io: ::File, extra_checks: []) ⇒ Endpoint

Returns a new instance of Endpoint.



11
12
13
14
15
# File 'lib/rack/haproxy_status.rb', line 11

def initialize(path:, io: ::File, extra_checks: [])
  @path = path
  @io = io
  @extra_checks = extra_checks
end

Instance Method Details

#call(env) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rack/haproxy_status.rb', line 17

def call(env)
  balancer_member = balancer_member?
  extra_checks_all_successful = extra_checks_all_successful?
  http_code = balancer_member && extra_checks_all_successful ? 200 : 503
  status = extra_checks_all_successful ? 'ok' : 'error'

  [
    http_code,
    {'Content-Type' => 'application/json'},
    [JSON.generate(status: status, member: balancer_member?)]
  ]
rescue InvalidStatus
  [500, {'Content-Type' => 'application/json'}, ['{"status": "unknown status"}']]
end