diff options
Diffstat (limited to 'lib/error_tracking/sentry_client/projects.rb')
-rw-r--r-- | lib/error_tracking/sentry_client/projects.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/error_tracking/sentry_client/projects.rb b/lib/error_tracking/sentry_client/projects.rb new file mode 100644 index 00000000000..9b8daa226b0 --- /dev/null +++ b/lib/error_tracking/sentry_client/projects.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +module ErrorTracking + class SentryClient + module Projects + def projects + projects = get_projects + + handle_mapping_exceptions do + map_to_projects(projects) + end + end + + private + + def get_projects + http_get(api_urls.projects_url)[:body] + end + + def map_to_projects(projects) + projects.map(&method(:map_to_project)) + end + + def map_to_project(project) + organization = project.fetch('organization') + + Gitlab::ErrorTracking::Project.new( + id: project.fetch('id', nil), + name: project.fetch('name'), + slug: project.fetch('slug'), + status: project.dig('status'), + organization_name: organization.fetch('name'), + organization_id: organization.fetch('id', nil), + organization_slug: organization.fetch('slug') + ) + end + end + end +end |