diff options
| author | JP Appel <jeanpierre.appel01@gmail.com> | 2024-09-28 03:31:28 -0400 |
|---|---|---|
| committer | JP Appel <jeanpierre.appel01@gmail.com> | 2024-09-28 03:31:28 -0400 |
| commit | afe79e8430302808004ac2f5b5cc7d21d4d5d170 (patch) | |
| tree | 21609b2e45317f40698c607f56078a4a9bae5196 /net/net.go | |
| parent | 2df8b9bf6448d3a64aaeacf455d0820ce9c8c333 (diff) | |
Add simple http server
Diffstat (limited to 'net/net.go')
| -rw-r--r-- | net/net.go | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/net/net.go b/net/net.go new file mode 100644 index 0000000..228d22d --- /dev/null +++ b/net/net.go @@ -0,0 +1,81 @@ +package net + +import ( + "fmt" + "html/template" + "net/http" + "os" + "slices" + + "github.com/jpappel/bingo-factory/bingo" +) + +func errLog(w http.ResponseWriter, err error, logInfo string, httpInfo string) { + fmt.Fprintln(os.Stderr, logInfo, err) + http.Error(w, httpInfo, http.StatusInternalServerError) +} + +func game(w http.ResponseWriter, req *http.Request) { + game := bingo.Game{ + Length: 3, + FreeSquare: false, + } + + tiles := make([]bingo.Tile, 9) + for i := range 9 { + tiles[i].Text = fmt.Sprintf("Tile %d", i) + } + + game.Board = tiles + + t, err := template.ParseFiles("templates/base.html", "templates/bingo.html") + if err != nil { + errLog(w, err, "parsing template", "parse error") + return + } + + rows := slices.Collect(game.Rows()) + + data := struct { + Game bingo.Game + Rows [][]bingo.Tile + }{ + Game: game, + Rows: rows, + } + + if err = t.Execute(w, data); err != nil { + errLog(w, err, "template execute failed", "execute error") + return + } +} + +func home(w http.ResponseWriter, req *http.Request) { + + t, err := template.ParseFiles("templates/base.html") + if err != nil { + errLog(w, err, "parsing base template: ", "template parse error") + return + } + + t.Parse(` +{{ define "content" }} +<h1>Bingo Factory</h1> +<p>We're currently under construction, please check back soon!</p> +{{ end }} + `) + + if err = t.Execute(w, nil); err != nil { + errLog(w, err, "executing template", "template execute error") + return + } +} + +func NewMux() *http.ServeMux { + mux := http.NewServeMux() + + mux.Handle("GET /", http.HandlerFunc(home)) + mux.Handle("GET /bingo", http.HandlerFunc(game)) + + return mux +} |
