package main import ( "encoding/json" "fmt" "log" "io/ioutil" "os" "srs.epita.fr/fic-server/libfic" ) type askOpenHint struct { HintId int64 `json:"id"` } func treatOpeningHint(pathname string, team fic.Team) { var ask askOpenHint if cnt_raw, err := ioutil.ReadFile(pathname); err != nil { log.Println("[ERR]", err) } else if err = json.Unmarshal(cnt_raw, &ask); err != nil { log.Println("[ERR]", err) } else if ask.HintId == 0 { log.Println("[WRN] Invalid content in hint file: ", pathname) os.Remove(pathname) } else if hint, err := fic.GetHint(ask.HintId); err != nil { log.Println("[ERR] Unable to retrieve the given hint:", err) } else if exercice, err := hint.GetExercice(); err != nil { log.Println("[ERR] Unable to retrieve the hint's underlying exercice:", err) } else if !team.HasAccess(exercice) { log.Println("[!!!] The team asks to open an hint whereas it doesn't have access to the exercice") } else if err = team.OpenHint(hint); err != nil { log.Println("[ERR] Unable to open hint", err) } else { // Write event if lvl, err := exercice.GetLevel(); err != nil { log.Println("[WRN]", err) } else if theme, err := fic.GetTheme(exercice.IdTheme); err != nil { log.Println("[WRN]", err) } else if _, err = fic.NewEvent(fmt.Sprintf("L'équipe %s a dévoilé un indice pour le %de défi %s !", team.Name, lvl, theme.Name), "info"); err != nil { log.Println("[WRN] Unable to create event:", err) } if err = genTeamMyFile(team); err != nil { log.Println("my-", team.Id, ".json generation error: ", err) } if err = genEventsFile(); err != nil { log.Println("events.json generation error: ", err) } if err = os.Remove(pathname); err != nil { log.Println("[ERR]", err) } } }