summaryrefslogtreecommitdiff
path: root/lib/error_tracking/collector/dsn.rb
blob: 665181328f3a07cbafed221ede7b30ee0d88c82e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# frozen_string_literal: true

module ErrorTracking
  module Collector
    class Dsn
      # Build a sentry compatible DSN URL for GitLab collector.
      #
      # The expected URL looks like that:
      #   https://PUBLIC_KEY@gitlab.example.com/api/v4/error_tracking/collector/PROJECT_ID
      #
      def self.build_url(public_key, project_id)
        gitlab = Settings.gitlab

        custom_port = Settings.gitlab_on_standard_port? ? nil : ":#{gitlab.port}"

        base_url = [
          gitlab.protocol,
          "://",
          public_key,
          '@',
          gitlab.host,
          custom_port,
          gitlab.relative_url_root
        ].join('')

        "#{base_url}/api/v4/error_tracking/collector/#{project_id}"
      end
    end
  end
end