41 lines
831 B
Ruby
41 lines
831 B
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative 'sentry'
|
|
|
|
class SentryCsp
|
|
def self.active?
|
|
dsn.present? && %w[development test].exclude?(environment)
|
|
end
|
|
|
|
def self.report_url
|
|
parsed_url = URI.parse dsn
|
|
|
|
# Add additional variables to the query string
|
|
query_params = CGI.parse(parsed_url.query || '')
|
|
query_params[:sentry_release] = release if release
|
|
query_params[:sentry_environment] = environment if environment
|
|
|
|
# Add the query string back to the URL
|
|
parsed_url.query = URI.encode_www_form(query_params)
|
|
|
|
# Return the full URL
|
|
parsed_url.to_s
|
|
end
|
|
|
|
class << self
|
|
private
|
|
|
|
def dsn
|
|
ENV.fetch('SENTRY_CSP_REPORT_URL', nil)
|
|
end
|
|
|
|
def release
|
|
Sentry.configuration.release
|
|
end
|
|
|
|
def environment
|
|
Sentry.configuration.environment
|
|
end
|
|
end
|
|
end
|