Experimental connector for data streaming (PoC)
Source
package server
import (
"encoding/json"
"fmt"
"io"
)
func handleEvent(rc io.ReadCloser) error {
decoder := json.NewDecoder(rc)
for decoder.More() {
var event event
if err := decoder.Decode(&event); err != nil {
return fmt.Errorf("failed to parse history body data %s", err.Error())
}
errors := event.validate()
if len(errors) != 0 {
return fmt.Errorf("failed to validate data errors: %v", errors)
}
}
return nil
}
func (e event) validate() map[string]string {
errors := e.generic.validate()
err := e.EventId.validate()
if err != nil {
errors["eventId"] = err.Error()
}
err = e.Severity.validate()
if err != nil {
errors["severity"] = err.Error()
}
err = e.Hosts.validate()
if err != nil {
errors["hosts"] = err.Error()
}
for i, h := range e.Hosts.Value {
err = h.Host.validate()
if err != nil {
errors[fmt.Sprintf("hosts[%d].host", i)] = err.Error()
}
err = h.Name.validate()
if err != nil {
errors[fmt.Sprintf("hosts[%d].name", i)] = err.Error()
}
}
err = e.Tags.validate()
if err != nil {
errors["tags"] = err.Error()
}
for i, t := range e.Tags.Value {
err = t.Tag.validate()
if err != nil {