Class: Kraftwerk::Middleware::RequestTelemetry

Inherits:
Object
  • Object
show all
Defined in:
lib/kraftwerk/middleware/request_telemetry.rb

Constant Summary collapse

ROUTER_PARAMS =
'router.params'
PATH =
'PATH_INFO'
METHOD =
'REQUEST_METHOD'
QUERY_STRING =
'QUERY_STRING'
RACK_INPUT =
'rack.input'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, kraftwerk_app, telemetry: nil) ⇒ RequestTelemetry

Returns a new instance of RequestTelemetry.



14
15
16
17
18
# File 'lib/kraftwerk/middleware/request_telemetry.rb', line 14

def initialize(app, kraftwerk_app, telemetry: nil)
  @app = app
  @kraftwerk_app = kraftwerk_app
  @telemetry ||= kraftwerk_app::Components['telemetry']
end

Instance Attribute Details

#appObject (readonly)

Returns the value of attribute app.



12
13
14
# File 'lib/kraftwerk/middleware/request_telemetry.rb', line 12

def app
  @app
end

#kraftwerk_appObject (readonly)

Returns the value of attribute kraftwerk_app.



12
13
14
# File 'lib/kraftwerk/middleware/request_telemetry.rb', line 12

def kraftwerk_app
  @kraftwerk_app
end

#telemetryObject (readonly)

Returns the value of attribute telemetry.



12
13
14
# File 'lib/kraftwerk/middleware/request_telemetry.rb', line 12

def telemetry
  @telemetry
end

Instance Method Details

#call(env) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/kraftwerk/middleware/request_telemetry.rb', line 20

def call(env)
   = { app: kraftwerk_app, time: Time.now }
  start_data = request_start_data(env)
  telemetry.execute([:kraftwerk, :request, :start], start_data, )

  start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  app.call(env).tap do |response|
    telemetry.execute(
      [:kraftwerk, :request, :finish],
      request_finish_data(start_data, response, start_time),
      
    )
  end
end