Class: Apirelio::Rack::Middleware
- Inherits:
-
Object
- Object
- Apirelio::Rack::Middleware
- Defined in:
- lib/apirelio/rack/middleware.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#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
constructor
A new instance of Middleware.
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 |