Add Sentry instrumentation for JavaScript

This commit is contained in:
Sebastian Serth
2023-05-09 21:15:23 +02:00
parent aa05fcadf8
commit 240fbc5a3b
12 changed files with 166 additions and 59 deletions

View File

@ -0,0 +1,28 @@
# frozen_string_literal: true
module Middleware
class WebSocketSentryHeaders
def initialize(app)
@app = app
end
def call(env)
request = Rack::Request.new(env)
extract_sentry_parameters(request) if websocket_upgrade?(request)
@app.call(env)
end
private
def websocket_upgrade?(request)
request.get_header('HTTP_CONNECTION')&.casecmp?('Upgrade') &&
request.get_header('HTTP_UPGRADE')&.casecmp?('websocket')
end
def extract_sentry_parameters(request)
%w[HTTP_SENTRY_TRACE HTTP_BAGGAGE].each do |param|
request.add_header(param, request.delete_param(param))
end
end
end
end