diff options
Diffstat (limited to 'app/serializers')
-rw-r--r-- | app/serializers/build_details_entity.rb | 2 | ||||
-rw-r--r-- | app/serializers/ci/pipeline_entity.rb | 1 | ||||
-rw-r--r-- | app/serializers/concerns/diff_file_conflict_type.rb | 24 | ||||
-rw-r--r-- | app/serializers/diff_file_entity.rb | 7 | ||||
-rw-r--r-- | app/serializers/diff_file_metadata_entity.rb | 2 | ||||
-rw-r--r-- | app/serializers/diffs_entity.rb | 7 | ||||
-rw-r--r-- | app/serializers/diffs_metadata_entity.rb | 9 | ||||
-rw-r--r-- | app/serializers/group_link/project_group_link_entity.rb | 5 | ||||
-rw-r--r-- | app/serializers/integrations/project_entity.rb | 15 | ||||
-rw-r--r-- | app/serializers/integrations/project_serializer.rb | 9 | ||||
-rw-r--r-- | app/serializers/jira_connect/app_data_serializer.rb | 28 | ||||
-rw-r--r-- | app/serializers/jira_connect/group_entity.rb | 8 | ||||
-rw-r--r-- | app/serializers/jira_connect/subscription_entity.rb | 11 | ||||
-rw-r--r-- | app/serializers/merge_request_poll_cached_widget_entity.rb | 6 | ||||
-rw-r--r-- | app/serializers/merge_request_poll_widget_entity.rb | 8 | ||||
-rw-r--r-- | app/serializers/merge_request_widget_entity.rb | 25 | ||||
-rw-r--r-- | app/serializers/paginated_diff_entity.rb | 2 |
17 files changed, 142 insertions, 27 deletions
diff --git a/app/serializers/build_details_entity.rb b/app/serializers/build_details_entity.rb index 6fbd14f523d..4615f471639 100644 --- a/app/serializers/build_details_entity.rb +++ b/app/serializers/build_details_entity.rb @@ -133,7 +133,7 @@ class BuildDetailsEntity < JobEntity def callout_message return super unless build.failure_reason.to_sym == :missing_dependency_failure - docs_url = "https://docs.gitlab.com/ee/ci/yaml/README.html#dependencies" + docs_url = "https://docs.gitlab.com/ee/ci/yaml/index.html#dependencies" [ failure_message, diff --git a/app/serializers/ci/pipeline_entity.rb b/app/serializers/ci/pipeline_entity.rb index fa0e904fbde..a5af543f49f 100644 --- a/app/serializers/ci/pipeline_entity.rb +++ b/app/serializers/ci/pipeline_entity.rb @@ -7,6 +7,7 @@ class Ci::PipelineEntity < Grape::Entity delegate :name, :failure_reason, to: :presented_pipeline expose :id + expose :iid expose :user, using: UserEntity expose :active?, as: :active diff --git a/app/serializers/concerns/diff_file_conflict_type.rb b/app/serializers/concerns/diff_file_conflict_type.rb new file mode 100644 index 00000000000..29e30245dce --- /dev/null +++ b/app/serializers/concerns/diff_file_conflict_type.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module DiffFileConflictType + extend ActiveSupport::Concern + include Gitlab::Utils::StrongMemoize + + included do + expose :conflict_type do |diff_file, options| + conflict_file = conflict_file(options, diff_file) + + next unless conflict_file + + conflict_file.conflict_type(diff_file) + end + end + + private + + def conflict_file(options, diff_file) + strong_memoize(:conflict_file) do + options[:conflicts] && options[:conflicts][diff_file.new_path] + end + end +end diff --git a/app/serializers/diff_file_entity.rb b/app/serializers/diff_file_entity.rb index b2a544e1125..7eca56b2f48 100644 --- a/app/serializers/diff_file_entity.rb +++ b/app/serializers/diff_file_entity.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true class DiffFileEntity < DiffFileBaseEntity + include DiffFileConflictType include CommitsHelper include IconsHelper include Gitlab::Utils::StrongMemoize @@ -88,10 +89,4 @@ class DiffFileEntity < DiffFileBaseEntity # If nothing is present, inline will be the default. options.fetch(:diff_view, :inline).to_sym end - - def conflict_file(options, diff_file) - strong_memoize(:conflict_file) do - options[:conflicts] && options[:conflicts][diff_file.new_path] - end - end end diff --git a/app/serializers/diff_file_metadata_entity.rb b/app/serializers/diff_file_metadata_entity.rb index 70a5b266be1..772b549314e 100644 --- a/app/serializers/diff_file_metadata_entity.rb +++ b/app/serializers/diff_file_metadata_entity.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class DiffFileMetadataEntity < Grape::Entity + include DiffFileConflictType + expose :added_lines expose :removed_lines expose :new_path diff --git a/app/serializers/diffs_entity.rb b/app/serializers/diffs_entity.rb index 64f7f8bb5eb..e0565a1e506 100644 --- a/app/serializers/diffs_entity.rb +++ b/app/serializers/diffs_entity.rb @@ -71,7 +71,12 @@ class DiffsEntity < Grape::Entity submodule_links = Gitlab::SubmoduleLinks.new(merge_request.project.repository) DiffFileEntity.represent(diffs.diff_files, - options.merge(submodule_links: submodule_links, code_navigation_path: code_navigation_path(diffs), conflicts: conflicts)) + options.merge( + submodule_links: submodule_links, + code_navigation_path: code_navigation_path(diffs), + conflicts: conflicts(allow_tree_conflicts: options[:allow_tree_conflicts]) + ) + ) end expose :merge_request_diffs, using: MergeRequestDiffEntity, if: -> (_, options) { options[:merge_request_diffs]&.any? } do |diffs| diff --git a/app/serializers/diffs_metadata_entity.rb b/app/serializers/diffs_metadata_entity.rb index 681e629244f..8c226130f6e 100644 --- a/app/serializers/diffs_metadata_entity.rb +++ b/app/serializers/diffs_metadata_entity.rb @@ -2,8 +2,13 @@ class DiffsMetadataEntity < DiffsEntity unexpose :diff_files - expose :diff_files, using: DiffFileMetadataEntity do |diffs, _| - diffs.raw_diff_files(sorted: true) + expose :diff_files do |diffs, options| + DiffFileMetadataEntity.represent( + diffs.raw_diff_files(sorted: true), + options.merge( + conflicts: conflicts(allow_tree_conflicts: options[:allow_tree_conflicts]) + ) + ) end expose :conflict_resolution_path do |_, options| diff --git a/app/serializers/group_link/project_group_link_entity.rb b/app/serializers/group_link/project_group_link_entity.rb index 2ff275fff01..bcdafd8d685 100644 --- a/app/serializers/group_link/project_group_link_entity.rb +++ b/app/serializers/group_link/project_group_link_entity.rb @@ -3,14 +3,13 @@ module GroupLink class ProjectGroupLinkEntity < GroupLink::GroupLinkEntity include RequestAwareEntity - include Projects::ProjectMembersHelper expose :can_update do |group_link| - can_manage_project_members?(group_link.project) + can?(current_user, :admin_project_member, group_link.project) end expose :can_remove do |group_link| - can_manage_project_members?(group_link.project) + can?(current_user, :admin_project_member, group_link.project) end private diff --git a/app/serializers/integrations/project_entity.rb b/app/serializers/integrations/project_entity.rb new file mode 100644 index 00000000000..ee28c7c19c1 --- /dev/null +++ b/app/serializers/integrations/project_entity.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Integrations + class ProjectEntity < Grape::Entity + include RequestAwareEntity + + expose :avatar_url + expose :full_name + expose :name + + expose :full_path do |project| + project_path(project) + end + end +end diff --git a/app/serializers/integrations/project_serializer.rb b/app/serializers/integrations/project_serializer.rb new file mode 100644 index 00000000000..b7cd266fcbf --- /dev/null +++ b/app/serializers/integrations/project_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + class ProjectSerializer < BaseSerializer + include WithPagination + + entity Integrations::ProjectEntity + end +end diff --git a/app/serializers/jira_connect/app_data_serializer.rb b/app/serializers/jira_connect/app_data_serializer.rb new file mode 100644 index 00000000000..994ff19f96e --- /dev/null +++ b/app/serializers/jira_connect/app_data_serializer.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class JiraConnect::AppDataSerializer + include Gitlab::Routing + include ::API::Helpers::RelatedResourcesHelpers + + def initialize(subscriptions, signed_in) + @subscriptions = subscriptions + @signed_in = signed_in + end + + def as_json + skip_groups = @subscriptions.map(&:namespace_id) + + { + groups_path: api_v4_groups_path(params: { min_access_level: Gitlab::Access::MAINTAINER, skip_groups: skip_groups }), + subscriptions: JiraConnect::SubscriptionEntity.represent(@subscriptions).as_json, + subscriptions_path: jira_connect_subscriptions_path, + login_path: signed_in? ? nil : jira_connect_users_path + } + end + + private + + def signed_in? + !!@signed_in + end +end diff --git a/app/serializers/jira_connect/group_entity.rb b/app/serializers/jira_connect/group_entity.rb new file mode 100644 index 00000000000..e5a552cb9d8 --- /dev/null +++ b/app/serializers/jira_connect/group_entity.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class JiraConnect::GroupEntity < Grape::Entity + expose :name + expose :avatar_url + expose :full_name + expose :description +end diff --git a/app/serializers/jira_connect/subscription_entity.rb b/app/serializers/jira_connect/subscription_entity.rb new file mode 100644 index 00000000000..259cd5b122f --- /dev/null +++ b/app/serializers/jira_connect/subscription_entity.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class JiraConnect::SubscriptionEntity < Grape::Entity + include Gitlab::Routing + + expose :created_at + expose :unlink_path do |subscription| + jira_connect_subscription_path(subscription) + end + expose :namespace, with: JiraConnect::GroupEntity, as: :group +end diff --git a/app/serializers/merge_request_poll_cached_widget_entity.rb b/app/serializers/merge_request_poll_cached_widget_entity.rb index 6ac43e02f3c..7fba52cbe17 100644 --- a/app/serializers/merge_request_poll_cached_widget_entity.rb +++ b/app/serializers/merge_request_poll_cached_widget_entity.rb @@ -50,11 +50,7 @@ class MergeRequestPollCachedWidgetEntity < IssuableEntity MergeRequests::PipelineEntity.represent(merge_request.actual_head_pipeline, options) end - expose :merge_pipeline, if: ->(mr, _) { - Feature.enabled?(:merge_request_cached_merge_pipeline_serializer, mr.project, default_enabled: :yaml) && - mr.merged? && - can?(request.current_user, :read_pipeline, mr.target_project) - } do |merge_request, options| + expose :merge_pipeline, if: ->(mr, _) { mr.merged? && can?(request.current_user, :read_pipeline, mr.target_project) } do |merge_request, options| MergeRequests::PipelineEntity.represent(merge_request.merge_pipeline, options) end diff --git a/app/serializers/merge_request_poll_widget_entity.rb b/app/serializers/merge_request_poll_widget_entity.rb index 3ce67d92af1..074bd2d18d7 100644 --- a/app/serializers/merge_request_poll_widget_entity.rb +++ b/app/serializers/merge_request_poll_widget_entity.rb @@ -19,14 +19,6 @@ class MergeRequestPollWidgetEntity < Grape::Entity # User entities expose :merge_user, using: UserEntity - expose :merge_pipeline, if: ->(mr, _) { - Feature.disabled?(:merge_request_cached_merge_pipeline_serializer, mr.project, default_enabled: :yaml) && - mr.merged? && - can?(request.current_user, :read_pipeline, mr.target_project) - } do |merge_request, options| - MergeRequests::PipelineEntity.represent(merge_request.merge_pipeline, options) - end - expose :default_merge_commit_message expose :mergeable do |merge_request, options| diff --git a/app/serializers/merge_request_widget_entity.rb b/app/serializers/merge_request_widget_entity.rb index c3e8b66fe12..1c033dee5ff 100644 --- a/app/serializers/merge_request_widget_entity.rb +++ b/app/serializers/merge_request_widget_entity.rb @@ -110,9 +110,17 @@ class MergeRequestWidgetEntity < Grape::Entity presenter(merge_request).closing_issues_links end + expose :closing_count do |merge_request| + presenter(merge_request).closing_issues.size + end + expose :mentioned_but_not_closing do |merge_request| presenter(merge_request).mentioned_issues_links end + + expose :mentioned_count do |merge_request| + presenter(merge_request).mentioned_issues.size + end end expose :codeclimate, if: -> (mr, _) { head_pipeline_downloadable_path_for_report_type(:codequality) } do @@ -137,6 +145,23 @@ class MergeRequestWidgetEntity < Grape::Entity merge_request.enabled_reports end + expose :show_gitpod_button do |merge_request| + Gitlab::CurrentSettings.gitpod_enabled + end + + expose :gitpod_url do |merge_request| + next unless Gitlab::CurrentSettings.gitpod_enabled + + gitpod_url = Gitlab::CurrentSettings.gitpod_url + context_url = project_merge_request_url(merge_request.project, merge_request) + + "#{gitpod_url}##{context_url}" + end + + expose :gitpod_enabled do |merge_request| + current_user&.gitpod_enabled || false + end + private delegate :current_user, to: :request diff --git a/app/serializers/paginated_diff_entity.rb b/app/serializers/paginated_diff_entity.rb index a2a9e7375a0..c656cff9dd7 100644 --- a/app/serializers/paginated_diff_entity.rb +++ b/app/serializers/paginated_diff_entity.rb @@ -17,7 +17,7 @@ class PaginatedDiffEntity < Grape::Entity options.merge( submodule_links: submodule_links, code_navigation_path: code_navigation_path(diffs), - conflicts: conflicts + conflicts: conflicts(allow_tree_conflicts: options[:allow_tree_conflicts]) ) ) end |