diff options
author | Peter Leitzen <pleitzen@gitlab.com> | 2018-12-13 15:57:51 +0100 |
---|---|---|
committer | Peter Leitzen <pleitzen@gitlab.com> | 2019-01-02 19:43:03 +0100 |
commit | 835b490af63ef67a2f768c856a675a6a7f19cd13 (patch) | |
tree | 28cd9ab709e9972031a6c1b98a64d8f439c6bddb | |
parent | 916db33d4ca90eb23963607a2f66a7f8a3aeaae0 (diff) | |
download | gitlab-ce-835b490af63ef67a2f768c856a675a6a7f19cd13.tar.gz |
Expose Sentry external url
-rw-r--r-- | app/controllers/projects/error_tracking_controller.rb | 15 | ||||
-rw-r--r-- | app/services/error_tracking/sentry_issues_service.rb | 17 |
2 files changed, 24 insertions, 8 deletions
diff --git a/app/controllers/projects/error_tracking_controller.rb b/app/controllers/projects/error_tracking_controller.rb index 4e912797224..3c2064b7d6b 100644 --- a/app/controllers/projects/error_tracking_controller.rb +++ b/app/controllers/projects/error_tracking_controller.rb @@ -8,21 +8,26 @@ class Projects::ErrorTrackingController < Projects::ApplicationController end def index - render json: query_errors + external_url, errors = errors_for(@project) + + render json: { + external_url: external_url, + errors: errors + } end private - def query_errors - setting = fetch_settings(@project) - return [] unless setting + def errors_for(project) + settings = settings_for(project) + return nil, [] unless settings ErrorTracking::SentryIssuesService .new(settings.api_uri, settings.token) .execute end - def fetch_settings(project) + def settings_for(project) setting = project.error_tracking_setting return setting if setting&.enabled? end diff --git a/app/services/error_tracking/sentry_issues_service.rb b/app/services/error_tracking/sentry_issues_service.rb index d084a56fe23..984ce656e76 100644 --- a/app/services/error_tracking/sentry_issues_service.rb +++ b/app/services/error_tracking/sentry_issues_service.rb @@ -3,25 +3,36 @@ module ErrorTracking class SentryIssuesService def initialize(url, token) - @url = URI(url + '/issues/') + @url = URI(url) @token = token end def execute(limit: 20, issue_status: 'unresolved') + external_url = extract_external_url issues = get_issues(limit, issue_status) - map_to_errors(issues) + errors = map_to_errors(issues) + + [external_url, errors] end private + # http://HOST/api/0/projects/ORG/PROJECT + # -> + # http://HOST/ORG/PROJECT + def extract_external_url + @url.to_s.sub('api/0/projects/', '') + end + def get_issues(limit, issue_status) + issues_url = "#{@url}/issues/" sentry_query = { query: "is:#{issue_status}", limit: limit } # "query=is:unresolved&limit=#{limit}&sort=date&statsPeriod=24h&shortIdLookup=1" - resp = Gitlab::HTTP.get(@url.to_s, + resp = Gitlab::HTTP.get(issues_url, query: sentry_query, headers: { 'Authorization' => "Bearer #{@token}" |