summaryrefslogtreecommitdiff
path: root/lib/gitlab/metrics/dashboard/url.rb
blob: b197e7ca86b8c08808fce6bcf865bebf5bd3dc4f (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
31
32
33
34
35
36
37
38
39
40
# frozen_string_literal: true

# Manages url matching for metrics dashboards.
module Gitlab
  module Metrics
    module Dashboard
      class Url
        class << self
          # Matches urls for a metrics dashboard. This could be
          # either the /metrics endpoint or the /metrics_dashboard
          # endpoint.
          #
          # EX - https://<host>/<namespace>/<project>/environments/<env_id>/metrics
          def regex
            %r{
              (?<url>
                #{Regexp.escape(Gitlab.config.gitlab.url)}
                \/#{Project.reference_pattern}
                (?:\/\-)?
                \/environments
                \/(?<environment>\d+)
                \/metrics
                (?<query>
                  \?[a-z0-9_=-]+
                  (&[a-z0-9_=-]+)*
                )?
                (?<anchor>\#[a-z0-9_-]+)?
              )
            }x
          end

          # Builds a metrics dashboard url based on the passed in arguments
          def build_dashboard_url(*args)
            Gitlab::Routing.url_helpers.metrics_dashboard_namespace_project_environment_url(*args)
          end
        end
      end
    end
  end
end