Class: Bugsage::Middleware

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

Constant Summary collapse

CASCADE_HEADER =
"X-Cascade"

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Middleware

Returns a new instance of Middleware.



7
8
9
# File 'lib/bugsage/middleware.rb', line 7

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/bugsage/middleware.rb', line 11

def call(env)
  return handle_dashboard(env) if dashboard_request?(env)
  return InlineConsole.handle_request(env) if console_request?(env)
  return AiPanel.handle_request(env) if ai_suggest_request?(env)
  return AiChat.handle_request(env) if ai_chat_request?(env)
  return FixApplicator.handle_request(env) if apply_fix_request?(env)
  return SessionClear.handle_request(env) if clear_request?(env)
  return @app.call(env) unless Bugsage.configuration.enabled?

  status, headers, body = @app.call(env)
  body_parts = extract_body(body)
  close_body(body)

  return pass_through(status, headers, body_parts) if bugsage_response?(body_parts)

  rendered = capture_routing_error(env, headers)
  return rendered if rendered

  rendered = capture_exception(env)
  return rendered if rendered

  capture_http_error(env, status, body_parts.join)
  pass_through(status, headers, body_parts)
rescue StandardError => e
  result = capture_exception(env, e)
  return result if result.is_a?(Array)

  raise e
end