summaryrefslogtreecommitdiff
path: root/lib/api/entities
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/entities')
-rw-r--r--lib/api/entities/access_requester.rb10
-rw-r--r--lib/api/entities/basic_group_details.rb11
-rw-r--r--lib/api/entities/group.rb36
-rw-r--r--lib/api/entities/group_detail.rb36
-rw-r--r--lib/api/entities/member.rb11
-rw-r--r--lib/api/entities/project_daily_fetches.rb10
-rw-r--r--lib/api/entities/project_daily_statistics.rb12
7 files changed, 126 insertions, 0 deletions
diff --git a/lib/api/entities/access_requester.rb b/lib/api/entities/access_requester.rb
new file mode 100644
index 00000000000..951250225cc
--- /dev/null
+++ b/lib/api/entities/access_requester.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ class AccessRequester < Grape::Entity
+ expose :user, merge: true, using: UserBasic
+ expose :requested_at
+ end
+ end
+end
diff --git a/lib/api/entities/basic_group_details.rb b/lib/api/entities/basic_group_details.rb
new file mode 100644
index 00000000000..882fce4ef2c
--- /dev/null
+++ b/lib/api/entities/basic_group_details.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ class BasicGroupDetails < Grape::Entity
+ expose :id
+ expose :web_url
+ expose :name
+ end
+ end
+end
diff --git a/lib/api/entities/group.rb b/lib/api/entities/group.rb
new file mode 100644
index 00000000000..8bcad5bca35
--- /dev/null
+++ b/lib/api/entities/group.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ class Group < BasicGroupDetails
+ expose :path, :description, :visibility
+ expose :share_with_group_lock
+ expose :require_two_factor_authentication
+ expose :two_factor_grace_period
+ expose :project_creation_level_str, as: :project_creation_level
+ expose :auto_devops_enabled
+ expose :subgroup_creation_level_str, as: :subgroup_creation_level
+ expose :emails_disabled
+ expose :mentions_disabled
+ expose :lfs_enabled?, as: :lfs_enabled
+ expose :avatar_url do |group, options|
+ group.avatar_url(only_path: false)
+ end
+ expose :request_access_enabled
+ expose :full_name, :full_path
+ expose :parent_id
+
+ expose :custom_attributes, using: 'API::Entities::CustomAttribute', if: :with_custom_attributes
+
+ expose :statistics, if: :statistics do
+ with_options format_with: -> (value) { value.to_i } do
+ expose :storage_size
+ expose :repository_size
+ expose :wiki_size
+ expose :lfs_objects_size
+ expose :build_artifacts_size, as: :job_artifacts_size
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/group_detail.rb b/lib/api/entities/group_detail.rb
new file mode 100644
index 00000000000..97b98aac585
--- /dev/null
+++ b/lib/api/entities/group_detail.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ class GroupDetail < Group
+ expose :runners_token, if: lambda { |group, options| options[:user_can_admin_group] }
+ expose :projects, using: Entities::Project do |group, options|
+ projects = GroupProjectsFinder.new(
+ group: group,
+ current_user: options[:current_user],
+ options: { only_owned: true, limit: projects_limit }
+ ).execute
+
+ Entities::Project.prepare_relation(projects)
+ end
+
+ expose :shared_projects, using: Entities::Project do |group, options|
+ projects = GroupProjectsFinder.new(
+ group: group,
+ current_user: options[:current_user],
+ options: { only_shared: true, limit: projects_limit }
+ ).execute
+
+ Entities::Project.prepare_relation(projects)
+ end
+
+ def projects_limit
+ if ::Feature.enabled?(:limit_projects_in_groups_api, default_enabled: true)
+ GroupProjectsFinder::DEFAULT_PROJECTS_LIMIT
+ else
+ nil
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/member.rb b/lib/api/entities/member.rb
new file mode 100644
index 00000000000..558f37d1a56
--- /dev/null
+++ b/lib/api/entities/member.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ class Member < Grape::Entity
+ expose :user, merge: true, using: UserBasic
+ expose :access_level
+ expose :expires_at
+ end
+ end
+end
diff --git a/lib/api/entities/project_daily_fetches.rb b/lib/api/entities/project_daily_fetches.rb
new file mode 100644
index 00000000000..036b5dc99b8
--- /dev/null
+++ b/lib/api/entities/project_daily_fetches.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ class ProjectDailyFetches < Grape::Entity
+ expose :fetch_count, as: :count
+ expose :date
+ end
+ end
+end
diff --git a/lib/api/entities/project_daily_statistics.rb b/lib/api/entities/project_daily_statistics.rb
new file mode 100644
index 00000000000..803ee445851
--- /dev/null
+++ b/lib/api/entities/project_daily_statistics.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ class ProjectDailyStatistics < Grape::Entity
+ expose :fetches do
+ expose :total_fetch_count, as: :total
+ expose :fetches, as: :days, using: ProjectDailyFetches
+ end
+ end
+ end
+end