diff options
Diffstat (limited to 'app/serializers/service_event_entity.rb')
-rw-r--r-- | app/serializers/service_event_entity.rb | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/app/serializers/service_event_entity.rb b/app/serializers/service_event_entity.rb new file mode 100644 index 00000000000..fd655dd1ed3 --- /dev/null +++ b/app/serializers/service_event_entity.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +class ServiceEventEntity < Grape::Entity + include RequestAwareEntity + + expose :title do |event| + event + end + + expose :event_field_name, as: :name + + expose :value do |event| + service[event_field_name] + end + + expose :description do |event| + service.class.event_description(event) + end + + expose :field, if: -> (_, _) { event_field } do + expose :name do |event| + event_field[:name] + end + expose :value do |event| + service.public_send(event_field[:name]) # rubocop:disable GitlabSecurity/PublicSend + end + end + + private + + alias_method :event, :object + + def event_field_name + ServicesHelper.service_event_field_name(event) + end + + def event_field + @event_field ||= service.event_field(event) + end + + def service + request.service + end +end |