diff options
-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}" |