|
|
@@ -0,0 +1,61 @@
|
|
|
+package server
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "net/http"
|
|
|
+)
|
|
|
+
|
|
|
+func (server *Server) addTask(w http.ResponseWriter, r *http.Request) {
|
|
|
+ var valid bool = true
|
|
|
+
|
|
|
+ if r.Method != http.MethodPost {
|
|
|
+ http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if err := r.ParseForm(); err != nil {
|
|
|
+ fmt.Fprintf(w, "ERROR: Failed ParseForm() err: %v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //fmt.Println(r.PostForm)
|
|
|
+ // Validate r.PostForm["rows"]
|
|
|
+ // Look at flags.validateRow()
|
|
|
+ // 1. Make sure the rows is 9 in length
|
|
|
+ if len(r.PostForm["rows"]) != 9 {
|
|
|
+ fmt.Fprintf(w, "ERROR: There aren't 9 rows")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. Validate the row
|
|
|
+ for _, value := range r.PostForm["rows"] {
|
|
|
+ if !server.validateRow(value) {
|
|
|
+ valid = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Go/No-Go moment
|
|
|
+ if !valid {
|
|
|
+ w.Write([]byte("ERROR found"))
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // Add the task
|
|
|
+ var puzzle [9]string
|
|
|
+ puzzle[0] = r.PostForm["rows"][0]
|
|
|
+ puzzle[1] = r.PostForm["rows"][1]
|
|
|
+ puzzle[2] = r.PostForm["rows"][2]
|
|
|
+ puzzle[3] = r.PostForm["rows"][3]
|
|
|
+ puzzle[4] = r.PostForm["rows"][4]
|
|
|
+ puzzle[5] = r.PostForm["rows"][5]
|
|
|
+ puzzle[6] = r.PostForm["rows"][6]
|
|
|
+ puzzle[7] = r.PostForm["rows"][7]
|
|
|
+ puzzle[8] = r.PostForm["rows"][8]
|
|
|
+
|
|
|
+ // Create task and chuck it in the server struct
|
|
|
+ task := Task{Puzzle: puzzle}
|
|
|
+ server.Tasks = append(server.Tasks, &task)
|
|
|
+
|
|
|
+ // Calling it
|
|
|
+ w.Write([]byte("Ok"))
|
|
|
+
|
|
|
+}
|