diff --git a/token-validator/students.go b/token-validator/students.go index 386df9a..2eab74a 100644 --- a/token-validator/students.go +++ b/token-validator/students.go @@ -5,6 +5,7 @@ import ( "crypto/sha512" "encoding/json" "fmt" + "log" "strings" "time" @@ -12,7 +13,7 @@ import ( ) func init() { - router.GET("/api/progress/", apiHandler( + router.GET("/api/progress", apiHandler( func(httprouter.Params, []byte) (interface{}, error) { if stds, err := getStudents(); err != nil { return nil, err @@ -25,6 +26,16 @@ func init() { for _, s := range sts { ret[std.Login][fmt.Sprintf("%d", s.Challenge)] = s } + + if pongs, err := std.lastPongs(); err == nil && len(pongs) > 0 { + ret[std.Login]["ping"] = UnlockedChallenge{ + IdStudent: std.Id, + Time: pongs[0].Date, + Value: pongs[0].State, + } + } else if err != nil { + log.Println(err) + } } } return ret, nil @@ -187,11 +198,11 @@ func updateStudent(current Student, body []byte) (interface{}, error) { } type UnlockedChallenge struct { - Id int64 `json:"id"` - IdStudent int64 `json:"id_student"` - Challenge int `json:"challenge"` - Time time.Time `json:"time"` - Value string `json:"value,omitempty"` + Id int64 `json:"id,omitempty"` + IdStudent int64 `json:"id_student"` + Challenge int `json:"challenge,omitempty"` + Time time.Time `json:"time"` + Value interface{} `json:"value,omitempty"` } func (s Student) getStates() (ucs []UnlockedChallenge, err error) {