github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/api4/track_record.go (about) 1 package api4 2 3 import ( 4 "net/http" 5 6 "github.com/masterhung0112/hk_server/v5/app" 7 "github.com/masterhung0112/hk_server/v5/audit" 8 "github.com/masterhung0112/hk_server/v5/model" 9 ) 10 11 func (api *API) InitTrackRecord() { 12 api.BaseRoutes.TrackRecords.Handle("", api.ApiSessionRequired(createTrackRecord)).Methods("POST") 13 api.BaseRoutes.TrackRecord.Handle("", api.ApiSessionRequired(getTrackRecord)).Methods("GET") 14 api.BaseRoutes.TrackRecord.Handle("/trackpoint", api.ApiSessionRequired(createNewTrackPointForTrackRecord)).Methods("POST") 15 api.BaseRoutes.TrackRecord.Handle("/start", api.ApiSessionRequired(startTrackRecord)).Methods("POST") 16 api.BaseRoutes.TrackRecord.Handle("/end", api.ApiSessionRequired(endTrackRecord)).Methods("POST") 17 } 18 19 func createTrackRecord(c *Context, w http.ResponseWriter, r *http.Request) { 20 trackRecord := model.TrackRecordFromJson(r.Body) 21 if trackRecord == nil { 22 c.SetInvalidParam("trackRecord") 23 return 24 } 25 26 auditRec := c.MakeAuditRecord("createTrackRecord", audit.Fail) 27 defer c.LogAuditRecWithLevel(auditRec, app.LevelContent) 28 auditRec.AddMeta("trackRecord", trackRecord) 29 30 rTrackRecord, err := c.App.CreateTrackRecord(trackRecord) 31 if err != nil { 32 c.Err = err 33 return 34 } 35 auditRec.Success() 36 auditRec.AddMeta("trackRecord", rTrackRecord) 37 w.WriteHeader(http.StatusCreated) 38 w.Write([]byte(rTrackRecord.ToJson())) 39 } 40 41 func getTrackRecord(c *Context, w http.ResponseWriter, r *http.Request) { 42 c.RequireTrackRecordId() 43 if c.Err != nil { 44 return 45 } 46 47 trackRecord, err := c.App.GetTrackRecord(c.Params.TrackRecordId) 48 if err != nil { 49 c.Err = err 50 return 51 } 52 53 w.Write([]byte(trackRecord.ToJson())) 54 } 55 56 func createNewTrackPointForTrackRecord(c *Context, w http.ResponseWriter, r *http.Request) { 57 c.RequireTrackRecordId() 58 if c.Err != nil { 59 return 60 } 61 62 trackPoint := model.TrackPointFromJson(r.Body) 63 if trackPoint == nil { 64 c.SetInvalidParam("trackPoint") 65 return 66 } 67 68 rTrackPoint, err := c.App.CreateTrackPointForTrackRecord(trackPoint, c.Params.TrackRecordId) 69 if err != nil { 70 c.Err = err 71 return 72 } 73 74 w.WriteHeader(http.StatusCreated) 75 w.Write([]byte(rTrackPoint.ToJson())) 76 } 77 78 func startTrackRecord(c *Context, w http.ResponseWriter, r *http.Request) { 79 c.RequireTrackRecordId() 80 if c.Err != nil { 81 return 82 } 83 84 trackRecord, err := c.App.StartTrackRecord(c.Params.TrackRecordId) 85 if err != nil { 86 c.Err = err 87 return 88 } 89 90 w.Write([]byte(trackRecord.ToJson())) 91 } 92 93 func endTrackRecord(c *Context, w http.ResponseWriter, r *http.Request) { 94 c.RequireTrackRecordId() 95 if c.Err != nil { 96 return 97 } 98 99 trackRecord, err := c.App.EndTrackRecord(c.Params.TrackRecordId) 100 if err != nil { 101 c.Err = err 102 return 103 } 104 105 w.Write([]byte(trackRecord.ToJson())) 106 }