summaryrefslogtreecommitdiff
path: root/lib/api/entities/project_integration.rb
blob: 649e4d015b8c4a7e7bd9324578f667338bbdbef7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# frozen_string_literal: true

module API
  module Entities
    class ProjectIntegration < Entities::ProjectIntegrationBasic
      # Expose serialized properties
      expose :properties do |integration, options|
        # TODO: Simplify as part of https://gitlab.com/gitlab-org/gitlab/issues/29404

        attributes =
          if integration.data_fields_present?
            integration.data_fields.as_json.keys
          else
            integration.properties.keys
          end

        attributes &= integration.api_field_names

        attributes.each_with_object({}) do |attribute, hash|
          hash[attribute] = integration.public_send(attribute) # rubocop:disable GitlabSecurity/PublicSend
        end
      end
    end
  end
end