summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Leitzen <pleitzen@gitlab.com>2018-12-13 15:57:51 +0100
committerPeter Leitzen <pleitzen@gitlab.com>2019-01-02 19:43:03 +0100
commit835b490af63ef67a2f768c856a675a6a7f19cd13 (patch)
tree28cd9ab709e9972031a6c1b98a64d8f439c6bddb
parent916db33d4ca90eb23963607a2f66a7f8a3aeaae0 (diff)
downloadgitlab-ce-835b490af63ef67a2f768c856a675a6a7f19cd13.tar.gz
Expose Sentry external url
-rw-r--r--app/controllers/projects/error_tracking_controller.rb15
-rw-r--r--app/services/error_tracking/sentry_issues_service.rb17
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}"