diff options
Diffstat (limited to 'lib/api/entities')
-rw-r--r-- | lib/api/entities/appearance.rb | 1 | ||||
-rw-r--r-- | lib/api/entities/branch.rb | 6 | ||||
-rw-r--r-- | lib/api/entities/design_management/design.rb | 16 | ||||
-rw-r--r-- | lib/api/entities/freeze_period.rb | 11 | ||||
-rw-r--r-- | lib/api/entities/job_request/artifacts.rb | 1 | ||||
-rw-r--r-- | lib/api/entities/merge_request_basic.rb | 6 | ||||
-rw-r--r-- | lib/api/entities/metrics/user_starred_dashboard.rb | 11 | ||||
-rw-r--r-- | lib/api/entities/personal_snippet.rb | 3 | ||||
-rw-r--r-- | lib/api/entities/project_repository_storage_move.rb | 14 | ||||
-rw-r--r-- | lib/api/entities/release.rb | 2 | ||||
-rw-r--r-- | lib/api/entities/remote_mirror.rb | 4 | ||||
-rw-r--r-- | lib/api/entities/runner_details.rb | 9 | ||||
-rw-r--r-- | lib/api/entities/snippet.rb | 10 | ||||
-rw-r--r-- | lib/api/entities/todo.rb | 13 | ||||
-rw-r--r-- | lib/api/entities/user_basic.rb | 2 | ||||
-rw-r--r-- | lib/api/entities/user_path.rb | 2 |
16 files changed, 96 insertions, 15 deletions
diff --git a/lib/api/entities/appearance.rb b/lib/api/entities/appearance.rb index c3cffc8d05c..a09faf55f48 100644 --- a/lib/api/entities/appearance.rb +++ b/lib/api/entities/appearance.rb @@ -19,6 +19,7 @@ module API end expose :new_project_guidelines + expose :profile_image_guidelines expose :header_message expose :footer_message expose :message_background_color diff --git a/lib/api/entities/branch.rb b/lib/api/entities/branch.rb index 1d5017ac702..f9d06082ad6 100644 --- a/lib/api/entities/branch.rb +++ b/lib/api/entities/branch.rb @@ -3,6 +3,8 @@ module API module Entities class Branch < Grape::Entity + include Gitlab::Routing + expose :name expose :commit, using: Entities::Commit do |repo_branch, options| @@ -36,6 +38,10 @@ module API expose :default do |repo_branch, options| options[:project].default_branch == repo_branch.name end + + expose :web_url do |repo_branch| + project_tree_url(options[:project], repo_branch.name) + end end end end diff --git a/lib/api/entities/design_management/design.rb b/lib/api/entities/design_management/design.rb new file mode 100644 index 00000000000..183fe06d8f1 --- /dev/null +++ b/lib/api/entities/design_management/design.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module API + module Entities + module DesignManagement + class Design < Grape::Entity + expose :id + expose :project_id + expose :filename + expose :image_url do |design| + ::Gitlab::UrlBuilder.build(design) + end + end + end + end +end diff --git a/lib/api/entities/freeze_period.rb b/lib/api/entities/freeze_period.rb new file mode 100644 index 00000000000..9b5f08925db --- /dev/null +++ b/lib/api/entities/freeze_period.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module API + module Entities + class FreezePeriod < Grape::Entity + expose :id + expose :freeze_start, :freeze_end, :cron_timezone + expose :created_at, :updated_at + end + end +end diff --git a/lib/api/entities/job_request/artifacts.rb b/lib/api/entities/job_request/artifacts.rb index c6871fdd875..0d27f5a9189 100644 --- a/lib/api/entities/job_request/artifacts.rb +++ b/lib/api/entities/job_request/artifacts.rb @@ -7,6 +7,7 @@ module API expose :name expose :untracked expose :paths + expose :exclude, expose_nil: false expose :when expose :expire_in expose :artifact_type diff --git a/lib/api/entities/merge_request_basic.rb b/lib/api/entities/merge_request_basic.rb index 4610220e4f6..1a89a83a619 100644 --- a/lib/api/entities/merge_request_basic.rb +++ b/lib/api/entities/merge_request_basic.rb @@ -50,8 +50,10 @@ module API # use `MergeRequest#mergeable?` instead (boolean). # See https://gitlab.com/gitlab-org/gitlab-foss/issues/42344 for more # information. - expose :merge_status do |merge_request| - merge_request.check_mergeability(async: true) + # + # For list endpoints, we skip the recheck by default, since it's expensive + expose :merge_status do |merge_request, options| + merge_request.check_mergeability(async: true) unless options[:skip_merge_status_recheck] merge_request.public_merge_status end expose :diff_head_sha, as: :sha diff --git a/lib/api/entities/metrics/user_starred_dashboard.rb b/lib/api/entities/metrics/user_starred_dashboard.rb new file mode 100644 index 00000000000..d774160e3ea --- /dev/null +++ b/lib/api/entities/metrics/user_starred_dashboard.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module API + module Entities + module Metrics + class UserStarredDashboard < Grape::Entity + expose :id, :dashboard_path, :user_id, :project_id + end + end + end +end diff --git a/lib/api/entities/personal_snippet.rb b/lib/api/entities/personal_snippet.rb index eb0266e61e6..03ab6c0809c 100644 --- a/lib/api/entities/personal_snippet.rb +++ b/lib/api/entities/personal_snippet.rb @@ -3,9 +3,6 @@ module API module Entities class PersonalSnippet < Snippet - expose :raw_url do |snippet| - Gitlab::UrlBuilder.build(snippet, raw: true) - end end end end diff --git a/lib/api/entities/project_repository_storage_move.rb b/lib/api/entities/project_repository_storage_move.rb new file mode 100644 index 00000000000..25643651a14 --- /dev/null +++ b/lib/api/entities/project_repository_storage_move.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module API + module Entities + class ProjectRepositoryStorageMove < Grape::Entity + expose :id + expose :created_at + expose :human_state_name, as: :state + expose :source_storage_name + expose :destination_storage_name + expose :project, using: Entities::ProjectIdentity + end + end +end diff --git a/lib/api/entities/release.rb b/lib/api/entities/release.rb index edcd9bc6505..99fa496d368 100644 --- a/lib/api/entities/release.rb +++ b/lib/api/entities/release.rb @@ -21,7 +21,6 @@ module API expose :milestones, using: Entities::MilestoneWithStats, if: -> (release, _) { release.milestones.present? && can_read_milestone? } expose :commit_path, expose_nil: false expose :tag_path, expose_nil: false - expose :evidence_sha, expose_nil: false, if: ->(_, _) { can_download_code? } expose :assets do expose :assets_count, as: :count do |release, _| @@ -32,7 +31,6 @@ module API expose :links, using: Entities::Releases::Link do |release, options| release.links.sorted end - expose :evidence_file_path, expose_nil: false, if: ->(_, _) { can_download_code? } end expose :evidences, using: Entities::Releases::Evidence, expose_nil: false, if: ->(_, _) { can_download_code? } expose :_links do diff --git a/lib/api/entities/remote_mirror.rb b/lib/api/entities/remote_mirror.rb index 18d51726bab..87daef9a05c 100644 --- a/lib/api/entities/remote_mirror.rb +++ b/lib/api/entities/remote_mirror.rb @@ -12,9 +12,7 @@ module API expose :last_successful_update_at expose :last_error expose :only_protected_branches - expose :keep_divergent_refs, if: -> (mirror, _options) do - ::Feature.enabled?(:keep_divergent_refs, mirror.project) - end + expose :keep_divergent_refs end end end diff --git a/lib/api/entities/runner_details.rb b/lib/api/entities/runner_details.rb index 2bb143253fe..1dd8543d595 100644 --- a/lib/api/entities/runner_details.rb +++ b/lib/api/entities/runner_details.rb @@ -11,9 +11,12 @@ module API expose :version, :revision, :platform, :architecture expose :contacted_at - # @deprecated in 12.10 https://gitlab.com/gitlab-org/gitlab/-/issues/214320 - # will be removed by 13.0 https://gitlab.com/gitlab-org/gitlab/-/issues/214322 - expose :token, if: lambda { |runner, options| options[:current_user].admin? || !runner.instance_type? } + # Will be removed: https://gitlab.com/gitlab-org/gitlab/-/issues/217105 + expose(:token, if: ->(runner, options) do + return false if ::Feature.enabled?(:hide_token_from_runners_api, default_enabled: true) + + options[:current_user].admin? || !runner.instance_type? + end) # rubocop: disable CodeReuse/ActiveRecord expose :projects, with: Entities::BasicProjectDetails do |runner, options| diff --git a/lib/api/entities/snippet.rb b/lib/api/entities/snippet.rb index 8a13b4746a9..19c89603cbc 100644 --- a/lib/api/entities/snippet.rb +++ b/lib/api/entities/snippet.rb @@ -3,14 +3,20 @@ module API module Entities class Snippet < Grape::Entity - expose :id, :title, :file_name, :description, :visibility + expose :id, :title, :description, :visibility expose :author, using: Entities::UserBasic expose :updated_at, :created_at expose :project_id expose :web_url do |snippet| Gitlab::UrlBuilder.build(snippet) end - expose :ssh_url_to_repo, :http_url_to_repo, if: ->(snippet) { snippet.versioned_enabled_for?(options[:current_user]) } + expose :raw_url do |snippet| + Gitlab::UrlBuilder.build(snippet, raw: true) + end + expose :ssh_url_to_repo, :http_url_to_repo, if: ->(snippet) { snippet.repository_exists? } + expose :file_name do |snippet| + snippet.file_name_on_repo || snippet.file_name + end end end end diff --git a/lib/api/entities/todo.rb b/lib/api/entities/todo.rb index abfdde89bf1..0acbb4cb704 100644 --- a/lib/api/entities/todo.rb +++ b/lib/api/entities/todo.rb @@ -22,6 +22,7 @@ module API expose :body expose :state expose :created_at + expose :updated_at def todo_target_class(target_type) # false as second argument prevents looking up in module hierarchy @@ -30,6 +31,8 @@ module API end def todo_target_url(todo) + return design_todo_target_url(todo) if todo.for_design? + target_type = todo.target_type.underscore target_url = "#{todo.resource_parent.class.to_s.underscore}_#{target_type}_url" @@ -41,6 +44,16 @@ module API def todo_target_anchor(todo) "note_#{todo.note_id}" if todo.note_id? end + + def design_todo_target_url(todo) + design = todo.target + path_options = { + anchor: todo_target_anchor(todo), + vueroute: design.filename + } + + ::Gitlab::Routing.url_helpers.designs_project_issue_url(design.project, design.issue, path_options) + end end end end diff --git a/lib/api/entities/user_basic.rb b/lib/api/entities/user_basic.rb index e063aa42855..80f3ee7b502 100644 --- a/lib/api/entities/user_basic.rb +++ b/lib/api/entities/user_basic.rb @@ -18,3 +18,5 @@ module API end end end + +API::Entities::UserBasic.prepend_if_ee('EE::API::Entities::UserBasic') diff --git a/lib/api/entities/user_path.rb b/lib/api/entities/user_path.rb index 7d922b39654..3f007659813 100644 --- a/lib/api/entities/user_path.rb +++ b/lib/api/entities/user_path.rb @@ -12,3 +12,5 @@ module API end end end + +API::Entities::UserPath.prepend_if_ee('EE::API::Entities::UserPath') |