79 lines
3.2 KiB
Go
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
|
|
|
|
}
|