Class: Apirelio::Rack::Middleware

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

Instance Method Summary collapse

Constructor Details

#initialize(app, client:, include_routes: [], exclude_routes: [], customer_resolver: nil, application_resolver: nil, error_code_resolver: nil, metadata_resolver: nil, route_resolver: nil, api_version_header: "HTTP_X_API_VERSION", capture_headers: %w[HTTP_X_SDK_VERSION HTTP_USER_AGENT],, sdk: "rack", sdk_version: VERSION) ⇒ Middleware

Returns a new instance of Middleware.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/apirelio/rack/middleware.rb', line 8

def initialize(app, client:, include_routes: [], exclude_routes: [], customer_resolver: nil,
               application_resolver: nil, error_code_resolver: nil, metadata_resolver: nil,
               route_resolver: nil, api_version_header: "HTTP_X_API_VERSION",
               capture_headers: %w[HTTP_X_SDK_VERSION HTTP_USER_AGENT], sdk: "rack",
               sdk_version: VERSION)
  @app = app
  @client = client
  @include_routes = include_routes
  @exclude_routes = exclude_routes
  @customer_resolver = customer_resolver
  @application_resolver = application_resolver
  @error_code_resolver = error_code_resolver
  @metadata_resolver = 
  @route_resolver = route_resolver
  @api_version_header = api_version_header
  @capture_headers = capture_headers
  @sdk = sdk
  @sdk_version = sdk_version
end

Instance Method Details

#call(env) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/apirelio/rack/middleware.rb', line 28

def call(env)
  started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  env[CONTEXT_KEY] = Context.new
  status, headers, body = @app.call(env)
  capture(env, status, headers, nil, started_at)
  [status, headers, body]
rescue StandardError => error
  capture(env, 500, {}, error, started_at)
  raise
end