commit faaf625fa8bc07b68394f2e814fda481f16b08f0 Author: Matthieu Lamalle Date: Wed Nov 20 17:11:29 2019 +0100 first commit diff --git a/csv/bdd.csv b/csv/bdd.csv new file mode 100644 index 0000000..e69de29 diff --git a/csv/foods.csv b/csv/foods.csv new file mode 100644 index 0000000..e696353 --- /dev/null +++ b/csv/foods.csv @@ -0,0 +1,8 @@ +sandwich,🥪 +sushi,🍣 +burger,🍔 +tacos,🌯 +italien,🍝 +kebab,🥙 +pizza,🍕 +hotdog,🌭 diff --git a/server b/server new file mode 100755 index 0000000..81dd42b Binary files /dev/null and b/server differ diff --git a/server.go b/server.go new file mode 100644 index 0000000..99dda3e --- /dev/null +++ b/server.go @@ -0,0 +1,102 @@ +package main + +import ( + "bufio" + "encoding/csv" + "html/template" + "io" + "io/ioutil" + "log" + "net/http" + "os" + "time" + + "github.com/Joker/jade" +) + +type FoodOfTheDay struct { + Date string + Foods map[string]string +} + +func main() { + + http.HandleFunc("/", base) + http.HandleFunc("/results", results) + + log.Print("ready: listening on localhost:8080\n") + food() + if err := http.ListenAndServe(":8080", nil); err != nil { + panic(err) + } + +} + +func base(w http.ResponseWriter, r *http.Request) { + + if r.Method == http.MethodPost { + log.Printf("vote") + } else if r.Method == http.MethodGet { + home(w, r) + } else { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte("400 - Unsupported Request Method!")) + } +} + +func home(w http.ResponseWriter, r *http.Request) { + dat, err := ioutil.ReadFile("./templates/index.go") + if err != nil { + log.Printf("ReadFile error: %v", err) + return + } + + tmpl, err := jade.Parse("index", []byte(dat)) + if err != nil { + log.Printf("Parse error: %v", err) + return + } + + w.Write([]byte(tmpl)) +} + +func results(w http.ResponseWriter, r *http.Request) { + dat, err := ioutil.ReadFile("./templates/results.go") + if err != nil { + log.Printf("ReadFile error: %v", err) + return + } + + tmpl, err := jade.Parse("results", []byte(dat)) + if err != nil { + log.Printf("Parse error: %v", err) + return + } + + goTpl, err := template.New("html").Parse(tmpl) + if err != nil { + log.Printf("\nTemplate parse error: %v", err) + return + } + err = goTpl.Execute(w, "") + if err != nil { + log.Printf("\nExecute error: %v", err) + return + } +} +func food() { + foodcsv, _ := os.Open("csv/foods.csv") + foodreader := csv.NewReader(bufio.NewReader(foodcsv)) + foods := FoodOfTheDay{time.Now().Format("20060102"), make(map[string]string)} + for { + line, err := foodreader.Read() + if err == io.EOF { + break + } else if err != nil { + log.Fatal(err) + } + foods.Foods[line[0]] = line[1] + } + log.Printf("%+q", foods) + +} diff --git a/templates/index.go b/templates/index.go new file mode 100644 index 0000000..8466b71 --- /dev/null +++ b/templates/index.go @@ -0,0 +1,53 @@ + + + + + Electronic Realtime Poll written in Go + + + + + + + +
+

Foodoles


+

Pick Your Preferred Food For Lunch


+ +
+ + + \ No newline at end of file diff --git a/templates/results.go b/templates/results.go new file mode 100644 index 0000000..4703768 --- /dev/null +++ b/templates/results.go @@ -0,0 +1,23 @@ + + + Electronic Realtime Poll written in Go + + + + + + + + +
+

TV Show - Poll Results


+ +
+
{{.Key}}
+
{{.Cluster}}
+ + \ No newline at end of file