diff options
author | lauraMon <lmontemayor@gitlab.com> | 2019-08-06 10:26:49 -0400 |
---|---|---|
committer | lauraMon <lmontemayor@gitlab.com> | 2019-08-06 10:26:49 -0400 |
commit | 31299bf451c9a73ed199232f9f8c01d59e6197da (patch) | |
tree | d98e76d2c0d0f10cccb259c6ac1b69cfa3585f1e | |
parent | 1d39a2eb4bde8f7d129ee96d8a37102a5abfdb18 (diff) | |
parent | 3ab57bf12a6c9345b19c73eb18c9a89e5ad9d71b (diff) | |
download | gitlab-ce-31299bf451c9a73ed199232f9f8c01d59e6197da.tar.gz |
Merge branch 'enable-specific-embeds' of gitlab.com:gitlab-org/gitlab-ce into enable-specific-embeds
-rw-r--r-- | lib/banzai/filter/inline_metrics_filter.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/metrics/dashboard/url.rb | 17 | ||||
-rw-r--r-- | spec/lib/gitlab/metrics/dashboard/url_spec.rb | 7 |
3 files changed, 20 insertions, 10 deletions
diff --git a/lib/banzai/filter/inline_metrics_filter.rb b/lib/banzai/filter/inline_metrics_filter.rb index 29f526d3421..e54136f776e 100644 --- a/lib/banzai/filter/inline_metrics_filter.rb +++ b/lib/banzai/filter/inline_metrics_filter.rb @@ -34,11 +34,7 @@ module Banzai def query_params(params) return {} unless params['query'] - CGI.parse(params['query'][1..-1]).map do |key, value| - target = value.length == 1 ? value.first : value - - [key.to_sym, target] - end.to_h + Gitlab::Metrics::Dashboard::Url.parse_query(params['query'][1..-1]) end # Search params for selecting metrics links. A few diff --git a/lib/gitlab/metrics/dashboard/url.rb b/lib/gitlab/metrics/dashboard/url.rb index 83d0a1cdf49..0324135f284 100644 --- a/lib/gitlab/metrics/dashboard/url.rb +++ b/lib/gitlab/metrics/dashboard/url.rb @@ -21,14 +21,27 @@ module Gitlab \/(?<environment>\d+) \/metrics (?<query> - \?[%.+a-zA-Z0-9_=-]+ - (&[%.+a-zA-Z0-9_=-]+)* + \?[a-zA-Z0-9%.()+_=-]+ + (&[a-zA-Z0-9%.()+_=-]+)* )? (?<anchor>\#[a-z0-9_-]+)? ) }x end + # Parses query params out from full string into hash. + # If multiple values are given for a parameter, they + # will be captured in an array. + # + # Ex) 'title=Title&group=Group' --> { title: 'Title', group: Group } + def parse_query(query_string) + CGI.parse(query_string).map do |key, value| + target = value.length == 1 ? value.first : value + + [key.to_sym, target] + end.to_h + 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) diff --git a/spec/lib/gitlab/metrics/dashboard/url_spec.rb b/spec/lib/gitlab/metrics/dashboard/url_spec.rb index edd11bf8023..e0dc6d98efc 100644 --- a/spec/lib/gitlab/metrics/dashboard/url_spec.rb +++ b/spec/lib/gitlab/metrics/dashboard/url_spec.rb @@ -13,8 +13,9 @@ describe Gitlab::Metrics::Dashboard::Url do 'foo', 'bar', 1, - start: 123345456, - dashboard: 'config%2Fprometheus%2Fcommon_metrics.yml', + start: '2019-08-02T05:43:09.000Z', + dashboard: 'config/prometheus/common_metrics.yml', + group: 'awesome group', anchor: 'title' ) @@ -23,7 +24,7 @@ describe Gitlab::Metrics::Dashboard::Url do 'namespace' => 'foo', 'project' => 'bar', 'environment' => '1', - 'query' => '?dashboard=config%252Fprometheus%252Fcommon_metrics.yml&start=123345456', + 'query' => '?dashboard=config%2Fprometheus%2Fcommon_metrics.yml&group=awesome+group&start=2019-08-02T05%3A43%3A09.000Z', 'anchor' => '#title' } |