server/backend/submission.go

56 lines
1.5 KiB
Go
Raw Normal View History

2016-01-13 19:38:45 +00:00
package main
import (
"bufio"
2016-01-14 17:17:35 +00:00
"encoding/base64"
"encoding/binary"
2016-01-13 19:38:45 +00:00
"log"
2016-01-14 17:17:35 +00:00
"math/rand"
2016-01-13 19:38:45 +00:00
"os"
"strconv"
"srs.epita.fr/fic-server/libfic"
)
2016-01-14 17:17:35 +00:00
func treatSubmission(pathname string, team_id string, exercice_id string) {
bid := make([]byte, 5)
binary.LittleEndian.PutUint32(bid, rand.Uint32())
id := "[" + base64.StdEncoding.EncodeToString(bid) + "]"
log.Println(id, "New submission receive", pathname)
2016-01-13 19:38:45 +00:00
if tid, err := strconv.Atoi(team_id); err != nil {
2016-01-14 17:17:35 +00:00
log.Println(id, "[ERR]", err)
2016-01-13 19:38:45 +00:00
} else if eid, err := strconv.Atoi(exercice_id); err != nil {
2016-01-14 17:17:35 +00:00
log.Println(id, "[ERR]", err)
2016-01-13 19:38:45 +00:00
} else if team, err := fic.GetTeam(tid); err != nil {
2016-01-14 17:17:35 +00:00
log.Println(id, "[ERR]", err)
2016-01-13 19:38:45 +00:00
} else if exercice, err := fic.GetExercice(eid); err != nil {
2016-01-14 17:17:35 +00:00
log.Println(id, "[ERR]", err)
2016-01-13 19:38:45 +00:00
} else if file, err := os.Open(pathname); err != nil {
2016-01-14 17:17:35 +00:00
log.Println(id, "[ERR]", err)
2016-01-13 19:38:45 +00:00
} else {
defer file.Close()
cnt := ""
scanner := bufio.NewScanner(file)
for scanner.Scan() {
cnt += scanner.Text()
}
2016-01-15 11:57:35 +00:00
if solved, err := exercice.CheckResponse(cnt, team); err != nil {
log.Println(id, "[ERR]", err)
} else if solved {
exercice.Solved(team)
log.Printf("%s Team %d SOLVED exercice %d\n", id, team.Id, exercice.Id)
2016-01-15 12:03:34 +00:00
if err := os.Remove(pathname); err != nil {
log.Println(id, "[ERR]", err)
}
2016-01-15 11:57:35 +00:00
} else {
log.Printf("%s Team %d submit an invalid solution for exercice %d\n", id, team.Id, exercice.Id)
2016-01-15 12:03:34 +00:00
if err := os.Remove(pathname); err != nil {
log.Println(id, "[ERR]", err)
}
2016-01-15 11:57:35 +00:00
}
2016-01-13 19:38:45 +00:00
}
}