Sha256: 3fd69a9630071329d289f761b2be37ced69897c843234f4d2aa07d06cb91186b

Contents?: true

Size: 549 Bytes

Versions: 3

Compression:

Stored size: 549 Bytes

Contents

# frozen_string_literal: true

require 'request_store'
require 'svcbase/random'

module Core
  # Add per-request tracking
  class RequestId
    def initialize(app)
      @app = app
    end

    def call(env)
      # RequestStore gem allows us to not muck with thread local storage directly
      RequestStore.store[:http_request_id] = env['HTTP_X_REQUEST_ID'] || Core::Random.short_id
      status, headers, body = @app.call(env)
      headers['X-Request-Id'] ||= RequestStore.store[:http_request_id]
      [status, headers, body]
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
svcbase-0.1.18 lib/svcbase/middleware/requestid.rb
svcbase-0.1.17 lib/svcbase/middleware/requestid.rb
svcbase-0.1.16 lib/svcbase/middleware/requestid.rb