2020-01-16 13:08:46 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2021-03-04 10:11:19 -05:00
|
|
|
module ErrorTracking
|
|
|
|
class SentryClient
|
2020-01-16 13:08:46 -05:00
|
|
|
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)
|
2022-04-04 14:08:38 -04:00
|
|
|
repos.map { map_to_repo(_1) }
|
2020-01-16 13:08:46 -05:00
|
|
|
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
|