Files
houston-be/internal/processor/events_api_event_processor.go
2023-04-10 17:30:28 +05:30

44 lines
1.4 KiB
Go

package processor
import (
"fmt"
"github.com/slack-go/slack/slackevents"
"github.com/slack-go/slack/socketmode"
"go.uber.org/zap"
"houston/internal/processor/action"
"houston/pkg/postgres/service/incident"
"houston/pkg/postgres/service/severity"
"houston/pkg/postgres/service/team"
)
type eventsApiEventProcessor interface {
ProcessCommand(event *slackevents.EventsAPIEvent, request *socketmode.Request)
}
type MemberJoinedCallbackEventProcessor struct {
logger *zap.Logger
socketModeClient *socketmode.Client
memberJoinAction *action.MemberJoinAction
}
func NewMemberJoinedCallbackEventProcessor(logger *zap.Logger, socketModeClient *socketmode.Client,
incidentService *incident.Service, teamService *team.Service, severityService *severity.Service) *MemberJoinedCallbackEventProcessor {
return &MemberJoinedCallbackEventProcessor{
logger: logger,
socketModeClient: socketModeClient,
memberJoinAction: action.NewMemberJoinAction(socketModeClient, logger, incidentService, teamService, severityService),
}
}
func (mjc *MemberJoinedCallbackEventProcessor) ProcessCommand(event *slackevents.MemberJoinedChannelEvent, request *socketmode.Request) {
defer func() {
if r := recover(); r != nil {
mjc.logger.Error(fmt.Sprintf("[MJC] Exception occurred: %v", r.(error)))
}
}()
mjc.memberJoinAction.PerformAction(event)
var payload interface{}
mjc.socketModeClient.Ack(*request, payload)
}