Refactor flags
Both QCM and Key are Flag
This commit is contained in:
parent
e029ec5414
commit
a66d6885e7
13 changed files with 318 additions and 249 deletions
|
@ -33,13 +33,13 @@ func init() {
|
|||
|
||||
router.GET("/api/exercices/:eid/flags", apiHandler(exerciceHandler(listExerciceFlags)))
|
||||
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", apiHandler(flagKeyHandler(showExerciceFlag)))
|
||||
router.PUT("/api/exercices/:eid/flags/:kid", apiHandler(flagKeyHandler(updateExerciceFlag)))
|
||||
router.POST("/api/exercices/:eid/flags/:kid/try", apiHandler(flagKeyHandler(tryExerciceFlag)))
|
||||
router.DELETE("/api/exercices/:eid/flags/:kid", apiHandler(flagKeyHandler(deleteExerciceFlag)))
|
||||
router.GET("/api/exercices/:eid/flags/:kid/choices/", apiHandler(flagKeyHandler(listFlagChoices)))
|
||||
router.GET("/api/exercices/:eid/flags/:kid/choices/:cid", apiHandler(choiceHandler(showFlagChoice)))
|
||||
router.POST("/api/exercices/:eid/flags/:kid/choices/", apiHandler(flagHandler(createFlagChoice)))
|
||||
router.POST("/api/exercices/:eid/flags/:kid/choices/", apiHandler(flagKeyHandler(createFlagChoice)))
|
||||
router.PUT("/api/exercices/:eid/flags/:kid/choices/:cid", apiHandler(choiceHandler(updateFlagChoice)))
|
||||
router.DELETE("/api/exercices/:eid/flags/:kid/choices/:cid", apiHandler(choiceHandler(deleteFlagChoice)))
|
||||
|
||||
|
@ -94,10 +94,10 @@ func listExerciceHints(exercice fic.Exercice, body []byte) (interface{}, error)
|
|||
}
|
||||
|
||||
func listExerciceFlags(exercice fic.Exercice, body []byte) (interface{}, error) {
|
||||
return exercice.GetFlags()
|
||||
return exercice.GetFlagKeys()
|
||||
}
|
||||
|
||||
func listFlagChoices(flag fic.Flag, _ fic.Exercice, body []byte) (interface{}, error) {
|
||||
func listFlagChoices(flag fic.FlagKey, _ fic.Exercice, body []byte) (interface{}, error) {
|
||||
return flag.GetChoices()
|
||||
}
|
||||
|
||||
|
@ -294,14 +294,14 @@ func createExerciceFlag(exercice fic.Exercice, body []byte) (interface{}, error)
|
|||
vre = uk.ValidatorRe
|
||||
}
|
||||
|
||||
return exercice.AddRawFlag(uk.Label, uk.Help, uk.IgnoreCase, vre, []byte(uk.Flag), uk.ChoicesCost)
|
||||
return exercice.AddRawFlagKey(uk.Label, uk.Help, uk.IgnoreCase, vre, []byte(uk.Flag), uk.ChoicesCost)
|
||||
}
|
||||
|
||||
func showExerciceFlag(flag fic.Flag, _ fic.Exercice, body []byte) (interface{}, error) {
|
||||
func showExerciceFlag(flag fic.FlagKey, _ fic.Exercice, body []byte) (interface{}, error) {
|
||||
return flag, nil
|
||||
}
|
||||
|
||||
func tryExerciceFlag(flag fic.Flag, _ fic.Exercice, body []byte) (interface{}, error) {
|
||||
func tryExerciceFlag(flag fic.FlagKey, _ fic.Exercice, body []byte) (interface{}, error) {
|
||||
var uk uploadedFlag
|
||||
if err := json.Unmarshal(body, &uk); err != nil {
|
||||
return nil, err
|
||||
|
@ -311,14 +311,14 @@ func tryExerciceFlag(flag fic.Flag, _ fic.Exercice, body []byte) (interface{}, e
|
|||
return nil, errors.New("Empty submission")
|
||||
}
|
||||
|
||||
if flag.Check([]byte(uk.Flag)) {
|
||||
if flag.Check([]byte(uk.Flag)) == 0 {
|
||||
return true, nil
|
||||
} else {
|
||||
return nil, errors.New("Bad submission")
|
||||
}
|
||||
}
|
||||
|
||||
func updateExerciceFlag(flag fic.Flag, exercice fic.Exercice, body []byte) (interface{}, error) {
|
||||
func updateExerciceFlag(flag fic.FlagKey, exercice fic.Exercice, body []byte) (interface{}, error) {
|
||||
var uk uploadedFlag
|
||||
if err := json.Unmarshal(body, &uk); err != nil {
|
||||
return nil, err
|
||||
|
@ -348,7 +348,7 @@ func updateExerciceFlag(flag fic.Flag, exercice fic.Exercice, body []byte) (inte
|
|||
return flag, nil
|
||||
}
|
||||
|
||||
func deleteExerciceFlag(flag fic.Flag, _ fic.Exercice, _ []byte) (interface{}, error) {
|
||||
func deleteExerciceFlag(flag fic.FlagKey, _ fic.Exercice, _ []byte) (interface{}, error) {
|
||||
return flag.Delete()
|
||||
}
|
||||
|
||||
|
@ -357,7 +357,7 @@ type uploadedChoice struct {
|
|||
Value string
|
||||
}
|
||||
|
||||
func createFlagChoice(flag fic.Flag, exercice fic.Exercice, body []byte) (interface{}, error) {
|
||||
func createFlagChoice(flag fic.FlagKey, exercice fic.Exercice, body []byte) (interface{}, error) {
|
||||
var uc uploadedChoice
|
||||
if err := json.Unmarshal(body, &uc); err != nil {
|
||||
return nil, err
|
||||
|
|
Reference in a new issue