package event import ( "encoding/json" "io" "time" "ems.agt/lib/dborm" "ems.agt/lib/global" "ems.agt/lib/log" "ems.agt/lib/services" "github.com/gin-gonic/gin" ) var ( UriUEEvent = "/upload-ue/v1/:eventType" ) type UEEvent struct { NeType string `json:"-" xorm:"ne_type"` NeName string `json:"-" xorm:"ne_name"` RmUID string `json:"-" xorm:"rm_uid"` Timestamp int `json:"-" xorm:"timestamp"` EventType string `json:"-" xorm:"event_type"` EventJson map[string]any `json:"-" xorm:"event_json"` } func PostUEEventFromAMF(c *gin.Context) { log.Info("PostUEEventFromAMF processing... ") body, err := io.ReadAll(io.LimitReader(c.Request.Body, global.RequestBodyMaxLen)) if err != nil { log.Error("Faile to io.ReadAll: ", err) services.ResponseNotFound404UriNotExist(c.Writer, c.Request) return } //vars := mux.Vars(c.Request) eventType, ok := c.Params.Get("eventType") if !ok || eventType == "" { log.Error("eventType is empty") services.ResponseNotFound404UriNotExist(c.Writer, c.Request) return } ueEvent := new(UEEvent) err = json.Unmarshal(body, &ueEvent.EventJson) if err != nil { log.Error("Failed to Unmarshal ueEvent:", err) services.ResponseInternalServerError500ProcessError(c.Writer, err) return } ueEvent.NeType = "AMF" ueEvent.Timestamp = int(time.Now().Unix()) ueEvent.EventType = eventType log.Trace("ueEvent:", ueEvent) affected, err := dborm.XormInsertTableOne("ue_event", ueEvent) if err != nil && affected <= 0 { log.Error("Failed to insert ue_event:", err) services.ResponseInternalServerError500ProcessError(c.Writer, err) return } services.ResponseStatusOK204NoContent(c.Writer) }