class Superintendent::Request::Id

Constants

X_REQUEST_ID

Public Class Methods

new(app) click to toggle source
# File lib/superintendent/request/id.rb, line 7
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/superintendent/request/id.rb, line 11
def call(env)
  request_id = make_request_id(env['HTTP_X_REQUEST_ID'])
  @app.call(env).tap { |_status, headers, _body| headers[X_REQUEST_ID] = request_id }
end

Private Instance Methods

internal_request_id() click to toggle source
# File lib/superintendent/request/id.rb, line 26
def internal_request_id
  "OHM#{SecureRandom.uuid.gsub!('-', '')}"
end
make_request_id(request_id) click to toggle source
# File lib/superintendent/request/id.rb, line 18
def make_request_id(request_id)
  if request_id && ! request_id.empty?
    request_id.gsub(/[^\w\-]/, "".freeze)[0..255]
  else
    internal_request_id
  end
end