diff options
Diffstat (limited to 'lib/sentry/client/repo.rb')
-rw-r--r-- | lib/sentry/client/repo.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/sentry/client/repo.rb b/lib/sentry/client/repo.rb new file mode 100644 index 00000000000..9a0ed3c7342 --- /dev/null +++ b/lib/sentry/client/repo.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +module Sentry + class Client + 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 |