Class: EsReadModel::RackSubscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/es_readmodel/rack_subscriber.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, options) ⇒ RackSubscriber

Returns a new instance of RackSubscriber.



11
12
13
14
15
16
# File 'lib/es_readmodel/rack_subscriber.rb', line 11

def initialize(app, options)
  @app = app
  @listener = options[:listener]
  @subscriber = Subscriber.new(options)
  Thread.new { @subscriber.subscribe }
end

Instance Attribute Details

#statusObject (readonly)

Returns the value of attribute status.



9
10
11
# File 'lib/es_readmodel/rack_subscriber.rb', line 9

def status
  @status
end

Instance Method Details

#call(env) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/es_readmodel/rack_subscriber.rb', line 18

def call(env)
  @request = Rack::Request.new(env)
  if env['PATH_INFO'] == '/status'
    status, headers, body = json_response(200, @subscriber.status)
  else
    env['readmodel.state'] = @subscriber.state
    env['readmodel.available'] = @subscriber.status[:available]
    env['readmodel.status'] = 'OK'
    status, headers, body = @app.call(env)
  end
  @listener.call({
    level:  'info',
    tag:    'http.request',
    msg:    "#{env['REQUEST_METHOD']} #{@request.fullpath}",
    status: status
  })
  [status, headers, body]
end