admin: new route to try a flag

This commit is contained in:
nemunaire 2018-12-08 03:13:16 +01:00
parent d89cd2f0ca
commit 5dbf60eaa2
3 changed files with 45 additions and 2 deletions

View file

@ -35,6 +35,7 @@ func init() {
router.POST("/api/exercices/:eid/flags", apiHandler(exerciceHandler(createExerciceFlag)))
router.GET("/api/exercices/:eid/flags/:kid", apiHandler(flagHandler(showExerciceFlag)))
router.PUT("/api/exercices/:eid/flags/:kid", apiHandler(flagHandler(updateExerciceFlag)))
router.POST("/api/exercices/:eid/flags/:kid/try", apiHandler(flagHandler(tryExerciceFlag)))
router.DELETE("/api/exercices/:eid/flags/:kid", apiHandler(flagHandler(deleteExerciceFlag)))
router.GET("/api/exercices/:eid/flags/:kid/choices/", apiHandler(flagHandler(listFlagChoices)))
router.GET("/api/exercices/:eid/flags/:kid/choices/:cid", apiHandler(choiceHandler(showFlagChoice)))
@ -300,6 +301,23 @@ func showExerciceFlag(flag fic.Flag, _ fic.Exercice, body []byte) (interface{},
return flag, nil
}
func tryExerciceFlag(flag fic.Flag, _ fic.Exercice, body []byte) (interface{}, error) {
var uk uploadedFlag
if err := json.Unmarshal(body, &uk); err != nil {
return nil, err
}
if len(uk.Flag) == 0 {
return nil, errors.New("Empty submission")
}
if flag.Check([]byte(uk.Flag)) {
return true, nil
} else {
return nil, errors.New("Bad submission")
}
}
func updateExerciceFlag(flag fic.Flag, exercice fic.Exercice, body []byte) (interface{}, error) {
var uk uploadedFlag
if err := json.Unmarshal(body, &uk); err != nil {