Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Leitzen <pleitzen@gitlab.com>2018-12-13 17:57:51 +0300
committerPeter Leitzen <pleitzen@gitlab.com>2018-12-13 18:03:18 +0300
commitfd23e9495215e59bbfe8b3910d01dc64ce52644b (patch)
treef6e280c77509e2d54a6a3c51da2c29ab3ce7cabb
parent473e6715593cbb267723d5258485490dc8515a20 (diff)
Expose Sentry external url
-rw-r--r--app/controllers/projects/error_tracking_controller.rb17
-rw-r--r--app/services/error_tracking/sentry_issues_service.rb17
2 files changed, 25 insertions, 9 deletions
diff --git a/app/controllers/projects/error_tracking_controller.rb b/app/controllers/projects/error_tracking_controller.rb
index 51cfa40bb1a..cb7819d4911 100644
--- a/app/controllers/projects/error_tracking_controller.rb
+++ b/app/controllers/projects/error_tracking_controller.rb
@@ -7,21 +7,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(setting.uri, setting.token)
+ .new(settings.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}"