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
|
# frozen_string_literal: true
module Projects
module ErrorTracking
class StackTracesController < Projects::ErrorTracking::BaseController
respond_to :json
before_action :authorize_read_sentry_issue!, :set_polling_interval
def index
result = fetch_latest_event_issue
if result[:status] == :success
result_with_syntax_highlight = Gitlab::ErrorTracking::StackTraceHighlightDecorator.decorate(
result[:latest_event]
)
render json: { error: serialize_error_event(result_with_syntax_highlight) }
else
render json: { message: result[:message] }, status: result.fetch(:http_status, :bad_request)
end
end
private
def fetch_latest_event_issue
::ErrorTracking::IssueLatestEventService
.new(project, current_user, issue_id: params[:issue_id])
.execute
end
def serialize_error_event(event)
::ErrorTracking::ErrorEventSerializer
.new(project: project, user: current_user)
.represent(event)
end
end
end
end
|