diff options
Diffstat (limited to 'app/serializers/integrations/event_entity.rb')
-rw-r--r-- | app/serializers/integrations/event_entity.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/app/serializers/integrations/event_entity.rb b/app/serializers/integrations/event_entity.rb new file mode 100644 index 00000000000..170f660f334 --- /dev/null +++ b/app/serializers/integrations/event_entity.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +module Integrations + class EventEntity < Grape::Entity + include RequestAwareEntity + + expose :title do |event| + IntegrationsHelper.integration_event_title(event) + end + + expose :event_field_name, as: :name + + expose :value do |event| + integration[event_field_name] + end + + expose :description do |event| + IntegrationsHelper.integration_event_description(integration, event) + end + + expose :field, if: ->(_, _) { event_field } do + expose :name do |event| + event_field[:name] + end + expose :value do |event| + integration.public_send(event_field[:name]) # rubocop:disable GitlabSecurity/PublicSend + end + end + + private + + alias_method :event, :object + + def event_field_name + IntegrationsHelper.integration_event_field_name(event) + end + + def event_field + @event_field ||= integration.event_field(event) + end + + def integration + request.integration + end + end +end |