61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
package mapper
|
|
|
|
import (
|
|
"alfred/model/common"
|
|
"alfred/model/es"
|
|
"encoding/json"
|
|
"github.com/elastic/go-elasticsearch/v8/esapi"
|
|
)
|
|
|
|
func MapEsResponseAndGetSessionIds(search *esapi.Response) ([]string, error) {
|
|
result, err := MapESApiResponseToESResponse(search)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var sessionIds []string
|
|
|
|
if len(result.Aggregation.Buckets.Buckets) == 0 {
|
|
return sessionIds, nil
|
|
}
|
|
|
|
for _, event := range result.Aggregation.Buckets.Buckets {
|
|
sessionIds = append(sessionIds, event.Key.(string))
|
|
}
|
|
return sessionIds, nil
|
|
}
|
|
|
|
func MapEsResponseToErrorEventsResponse(search *esapi.Response) ([]es.ErrorEventsResponse, error) {
|
|
result, err := MapESApiResponseToESResponse(search)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if len(result.Hits.Hits) == 0 {
|
|
return []es.ErrorEventsResponse{}, nil
|
|
}
|
|
|
|
var errorEvents []es.ErrorEventsResponse
|
|
jsonHits, err := json.Marshal(result.Hits.Hits)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if err = json.Unmarshal(jsonHits, &errorEvents); err != nil {
|
|
return nil, err
|
|
}
|
|
return errorEvents, nil
|
|
}
|
|
|
|
func MapEsResponseToTimeStamp(clientName string, search *esapi.Response) (int64, error) {
|
|
result, err := MapESApiResponseToESResponse(search)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
if len(result.Hits.Hits) == 0 {
|
|
return 0, &common.InvalidSessionError{}
|
|
}
|
|
timestamp, ok := result.Hits.Hits[0].Source[clientName].(float64)
|
|
if !ok {
|
|
return 0, &common.InvalidSessionError{}
|
|
}
|
|
return int64(timestamp), nil
|
|
}
|