diff options
Diffstat (limited to 'app/services/error_tracking/list_issues_service.rb')
-rw-r--r-- | app/services/error_tracking/list_issues_service.rb | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/app/services/error_tracking/list_issues_service.rb b/app/services/error_tracking/list_issues_service.rb index d34ea8aa3b0..7087e3825d6 100644 --- a/app/services/error_tracking/list_issues_service.rb +++ b/app/services/error_tracking/list_issues_service.rb @@ -6,6 +6,13 @@ module ErrorTracking DEFAULT_LIMIT = 20 DEFAULT_SORT = 'last_seen' + # Sentry client supports 'muted' and 'assigned' but GitLab does not + ISSUE_STATUS_VALUES = %w[ + resolved + unresolved + ignored + ].freeze + def external_url project_error_tracking_setting&.sentry_external_url end @@ -13,19 +20,31 @@ module ErrorTracking private def perform - project_error_tracking_setting.list_sentry_issues( + return invalid_status_error unless valid_status? + + response = project_error_tracking_setting.list_sentry_issues( issue_status: issue_status, limit: limit, search_term: params[:search_term].presence, sort: sort, cursor: params[:cursor].presence ) + + compose_response(response) end def parse_response(response) response.slice(:issues, :pagination) end + def invalid_status_error + error('Bad Request: Invalid issue_status', http_status_for(:bad_Request)) + end + + def valid_status? + ISSUE_STATUS_VALUES.include?(issue_status) + end + def issue_status params[:issue_status] || DEFAULT_ISSUE_STATUS end |