summaryrefslogtreecommitdiff
path: root/app/controllers/projects/error_tracking_controller.rb
blob: 3c2064b7d6be815f574eb2c97d48056cf29c187f (plain)
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
40
41
42
# frozen_string_literal: true

class Projects::ErrorTrackingController < Projects::ApplicationController
  before_action :check_feature_flag!
  before_action :push_feature_flag_to_frontend

  def list
  end

  def index
    external_url, errors = errors_for(@project) 

    render json: {
      external_url: external_url,
      errors: errors
    }
  end

  private

  def errors_for(project)
    settings = settings_for(project)
    return nil, [] unless settings

    ErrorTracking::SentryIssuesService
      .new(settings.api_uri, settings.token)
      .execute
  end

  def settings_for(project)
    setting = project.error_tracking_setting
    return setting if setting&.enabled?
  end

  def check_feature_flag!
    render_404 unless Feature.enabled?(:error_tracking, project)
  end

  def push_feature_flag_to_frontend
    push_frontend_feature_flag(:error_tracking, current_user)
  end
end