debian-mirror-gitlab/app/services/integrations/slack_interaction_service.rb
2023-07-09 08:55:56 +05:30

36 lines
953 B
Ruby

# frozen_string_literal: true
module Integrations
class SlackInteractionService
UnknownInteractionError = Class.new(StandardError)
INTERACTIONS = {
'view_closed' => SlackInteractions::IncidentManagement::IncidentModalClosedService,
'view_submission' => SlackInteractions::IncidentManagement::IncidentModalSubmitService,
'block_actions' => SlackInteractions::BlockActionService
}.freeze
def initialize(params)
@interaction_type = params.delete(:type)
@params = params
end
def execute
raise UnknownInteractionError, "Unable to handle interaction type: '#{interaction_type}'" \
unless interaction?(interaction_type)
service_class = INTERACTIONS[interaction_type]
service_class.new(params).execute
ServiceResponse.success
end
private
attr_reader :interaction_type, :params
def interaction?(type)
INTERACTIONS.key?(type)
end
end
end