41 lines
1.1 KiB
Ruby
41 lines
1.1 KiB
Ruby
class Dsn < ApplicationRecord
|
|
validates :key, presence: true, uniqueness: true
|
|
validates :name, presence: true
|
|
|
|
before_validation :generate_key, on: :create
|
|
|
|
scope :enabled, -> { where(enabled: true) }
|
|
|
|
def self.authenticate(key)
|
|
enabled.find_by(key: key)
|
|
end
|
|
|
|
def full_dsn_url
|
|
# Generate a complete DSN URL like Sentry does
|
|
# Format: https://{key}@{domain}
|
|
domain = ENV['BAFFLE_HOST'] ||
|
|
Rails.application.config.action_mailer.default_url_options[:host] ||
|
|
ENV['RAILS_HOST'] ||
|
|
'localhost:3000'
|
|
|
|
protocol = Rails.env.development? ? 'http' : 'https'
|
|
"#{protocol}://#{key}@#{domain}"
|
|
end
|
|
|
|
def api_endpoint_url
|
|
# Just the API endpoint URL (without key)
|
|
domain = ENV['BAFFLE_HOST'] ||
|
|
Rails.application.config.action_mailer.default_url_options[:host] ||
|
|
ENV['RAILS_HOST'] ||
|
|
'localhost:3000'
|
|
|
|
protocol = Rails.env.development? ? 'http' : 'https'
|
|
"#{protocol}://#{domain}"
|
|
end
|
|
|
|
private
|
|
|
|
def generate_key
|
|
self.key ||= SecureRandom.hex(32)
|
|
end
|
|
end |