2023-04-10 17:30:28 +05:30
|
|
|
package processor
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
2023-10-20 13:05:40 +05:30
|
|
|
"github.com/slack-go/slack/slackevents"
|
|
|
|
|
"github.com/slack-go/slack/socketmode"
|
2023-04-12 21:46:03 +05:30
|
|
|
"houston/internal/processor/action"
|
2023-11-02 13:11:52 +05:30
|
|
|
"houston/logger"
|
2023-04-12 21:46:03 +05:30
|
|
|
"houston/model/incident"
|
|
|
|
|
"houston/model/severity"
|
|
|
|
|
"houston/model/team"
|
2023-10-20 13:05:40 +05:30
|
|
|
"houston/model/user"
|
2023-04-10 17:30:28 +05:30
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type eventsApiEventProcessor interface {
|
|
|
|
|
ProcessCommand(event *slackevents.EventsAPIEvent, request *socketmode.Request)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type MemberJoinedCallbackEventProcessor struct {
|
|
|
|
|
socketModeClient *socketmode.Client
|
|
|
|
|
memberJoinAction *action.MemberJoinAction
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-02 13:11:52 +05:30
|
|
|
func NewMemberJoinedCallbackEventProcessor(socketModeClient *socketmode.Client,
|
2023-04-12 21:46:03 +05:30
|
|
|
incidentService *incident.Repository, teamService *team.Repository, severityService *severity.Repository) *MemberJoinedCallbackEventProcessor {
|
2023-04-10 17:30:28 +05:30
|
|
|
return &MemberJoinedCallbackEventProcessor{
|
|
|
|
|
socketModeClient: socketModeClient,
|
2023-11-02 13:11:52 +05:30
|
|
|
memberJoinAction: action.NewMemberJoinAction(socketModeClient, incidentService, teamService, severityService),
|
2023-04-10 17:30:28 +05:30
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (mjc *MemberJoinedCallbackEventProcessor) ProcessCommand(event *slackevents.MemberJoinedChannelEvent, request *socketmode.Request) {
|
|
|
|
|
defer func() {
|
|
|
|
|
if r := recover(); r != nil {
|
2023-11-02 13:11:52 +05:30
|
|
|
logger.Error(fmt.Sprintf("[MJC] Exception occurred: %v", r.(error)))
|
2023-04-10 17:30:28 +05:30
|
|
|
}
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
mjc.memberJoinAction.PerformAction(event)
|
|
|
|
|
var payload interface{}
|
|
|
|
|
mjc.socketModeClient.Ack(*request, payload)
|
|
|
|
|
}
|
2023-10-20 13:05:40 +05:30
|
|
|
|
|
|
|
|
type UserChangeEventProcessor struct {
|
|
|
|
|
socketModeClient *socketmode.Client
|
|
|
|
|
userChangeAction *action.UserChangeEventAction
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-02 13:11:52 +05:30
|
|
|
func NewUserChangeEventProcessor(socketModeClient *socketmode.Client, userRepository *user.Repository) *UserChangeEventProcessor {
|
2023-10-20 13:05:40 +05:30
|
|
|
return &UserChangeEventProcessor{
|
|
|
|
|
socketModeClient: socketModeClient,
|
2023-11-02 13:11:52 +05:30
|
|
|
userChangeAction: action.NewUserChangeEventAction(userRepository),
|
2023-10-20 13:05:40 +05:30
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ucep *UserChangeEventProcessor) ProcessCommand(event slackevents.EventsAPIEvent, request *socketmode.Request) {
|
|
|
|
|
defer func() {
|
|
|
|
|
if r := recover(); r != nil {
|
2023-11-02 13:11:52 +05:30
|
|
|
logger.Error(fmt.Sprintf("[UserChangeEventProcessor] Exception occurred: %v", r.(error)))
|
2023-10-20 13:05:40 +05:30
|
|
|
}
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
ucep.userChangeAction.PerformAction(event)
|
|
|
|
|
var payload interface{}
|
|
|
|
|
ucep.socketModeClient.Ack(*request, payload)
|
|
|
|
|
}
|