39 lines
825 B
Ruby
39 lines
825 B
Ruby
|
# 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
|