admin: new route to try a flag
This commit is contained in:
parent
d89cd2f0ca
commit
5dbf60eaa2
3 changed files with 45 additions and 2 deletions
|
@ -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 {
|
||||
|
|
Reference in a new issue