Files
alfred-be/alfred/cmd/collector/helper/error_events_builder.go
2026-03-08 16:14:42 +05:30

79 lines
3.2 KiB
Go

package helper
import (
"alfred/config"
"alfred/internal/clients"
"alfred/model/ferret"
"alfred/model/ingester"
"alfred/utils"
)
func BuildESUploadErrorEvent(alfredEvent ingester.BaseAttributes, zipName string, client string, err error, index, eventId string, statusCode int) ferret.ErrorEventsAttributes {
return ferret.ErrorEventsAttributes{
ferret.ErrorAttribute{
SessionId: alfredEvent.SessionId,
ClientName: ferret.ClientName(client),
DeviceId: alfredEvent.DeviceId,
CustomerId: alfredEvent.CustomerId,
PhoneNumber: alfredEvent.PhoneNumber,
AppVersionCode: alfredEvent.AppVersionCode,
AppVersionName: alfredEvent.AppVersionName,
},
[]ferret.ErrorEvent{{
ErrorTimestamp: utils.GetCurrentTimeInMillis(),
ZipNames: []string{zipName},
ErrorType: ferret.ES_UPLOAD_FAILURE,
RequestURL: ferret.RequestUrl(index),
RequestMethod: ferret.POST,
ClientTs: alfredEvent.ClientTs,
ErrorName: ferret.ES_UPLOAD,
ErrorStatusCode: statusCode,
ErrorMessage: err.Error(),
IsActive: true,
SessionId: alfredEvent.SessionId,
EventIdList: []string{eventId},
}},
}
}
func BuildErrorEventsSlackMessage(errorEvent ferret.ErrorEventAttribute) clients.SlackRequest {
slackMessage := make(map[string]interface{})
slackMessage["session_id"] = errorEvent.ErrorAttribute.SessionId
slackMessage["client_name"] = errorEvent.ErrorAttribute.ClientName
slackMessage["device_id"] = errorEvent.ErrorAttribute.DeviceId
slackMessage["customer_id"] = errorEvent.ErrorAttribute.CustomerId
slackMessage["phone_number"] = errorEvent.ErrorAttribute.PhoneNumber
slackMessage["error_timestamp"] = errorEvent.ErrorEvent.ErrorTimestamp
slackMessage["zip_names"] = errorEvent.ErrorEvent.ZipNames
slackMessage["error_type"] = errorEvent.ErrorEvent.ErrorType
slackMessage["request_url"] = errorEvent.ErrorEvent.RequestURL
slackMessage["request_method"] = errorEvent.ErrorEvent.RequestMethod
slackMessage["client_ts"] = errorEvent.ErrorEvent.ClientTs
slackMessage["error_name"] = errorEvent.ErrorEvent.ErrorName
slackMessage["error_status_code"] = errorEvent.ErrorEvent.ErrorStatusCode
slackMessage["error_message"] = errorEvent.ErrorEvent.ErrorMessage
slackMessage["is_active"] = errorEvent.ErrorEvent.IsActive
slackMessage["network_strength_in_kbps"] = errorEvent.ErrorEvent.NetworkStrengthInKbps
slackMessage["event_session_id"] = errorEvent.ErrorEvent.SessionId
slackMessage["event_id_list"] = errorEvent.ErrorEvent.EventIdList
return clients.SlackRequest{
Data: slackMessage,
TemplateId: config.GetCollectorConfig().ErrorEventsSlackTemplateId,
}
}
func ErrorEventsValidator(event ferret.ErrorEventAttribute) bool {
allowedFutureTimestamp := config.GetCollectorConfig().FutureTimestampValidationDiffInHours
allowedPastTimestamp := config.GetCollectorConfig().PastTimestampValidationDiffInHours
isValidTimeStamp := utils.ValidatePresentTime(event.ErrorEvent.ErrorTimestamp, allowedPastTimestamp, allowedFutureTimestamp)
if !isValidTimeStamp {
return false
}
if utils.Contains(config.GetCollectorConfig().IngestErrorEventsFilter, event.ErrorEvent.ErrorMessage) {
return false
}
return true
}