diff options
Diffstat (limited to 'lib/api/entities')
-rw-r--r-- | lib/api/entities/access_requester.rb | 10 | ||||
-rw-r--r-- | lib/api/entities/basic_group_details.rb | 11 | ||||
-rw-r--r-- | lib/api/entities/group.rb | 36 | ||||
-rw-r--r-- | lib/api/entities/group_detail.rb | 36 | ||||
-rw-r--r-- | lib/api/entities/member.rb | 11 | ||||
-rw-r--r-- | lib/api/entities/project_daily_fetches.rb | 10 | ||||
-rw-r--r-- | lib/api/entities/project_daily_statistics.rb | 12 |
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 |