summaryrefslogtreecommitdiff
path: root/lib/error_tracking/sentry_client/repo.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/error_tracking/sentry_client/repo.rb')
-rw-r--r--lib/error_tracking/sentry_client/repo.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/error_tracking/sentry_client/repo.rb b/lib/error_tracking/sentry_client/repo.rb
new file mode 100644
index 00000000000..3baa7e69be6
--- /dev/null
+++ b/lib/error_tracking/sentry_client/repo.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+module ErrorTracking
+ class SentryClient
+ module Repo
+ def repos(organization_slug)
+ repos_url = repos_api_url(organization_slug)
+
+ repos = http_get(repos_url)[:body]
+
+ handle_mapping_exceptions do
+ map_to_repos(repos)
+ end
+ end
+
+ private
+
+ def repos_api_url(organization_slug)
+ repos_url = URI(url)
+ repos_url.path = "/api/0/organizations/#{organization_slug}/repos/"
+
+ repos_url
+ end
+
+ def map_to_repos(repos)
+ repos.map(&method(:map_to_repo))
+ end
+
+ def map_to_repo(repo)
+ Gitlab::ErrorTracking::Repo.new(
+ status: repo.fetch('status'),
+ integration_id: repo.fetch('integrationId'),
+ project_id: repo.fetch('externalSlug')
+ )
+ end
+ end
+ end
+end