Method: Uptrace::DSN#initialize

Defined in:
lib/uptrace/dsn.rb

#initialize(dsn) ⇒ DSN

Returns a new instance of DSN.

Raises:

  • (ArgumentError)


8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/uptrace/dsn.rb', line 8

def initialize(dsn)
  raise ArgumentError, "DSN can't be empty" if dsn.empty?

  begin
    uri = URI.parse(dsn)
  rescue URI::InvalidURIError => e
    raise ArgumentError, %(can't parse DSN=#{dsn.inspect}: #{e})
  end

  @dsn = dsn
  @scheme = uri.scheme
  @host = uri.host
  @http_port = uri.port
  @token = uri.user

  %w[scheme host].each do |k|
    v = public_send(k)
    raise ArgumentError, %(DSN=#{dsn.inspect} does not have a #{k}) if v.nil? || v.empty?
  end

  @host = 'uptrace.dev' if @host == 'api.uptrace.dev'
end