From 9c5189071af25f2c582f43af82189499b76ed80f Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Mon, 17 Jun 2024 14:38:43 +1000 Subject: [PATCH] feat: Added init code --- main.go | 131 +++++++++++++++++++++++++++++++ templates/about.html | 13 +++ templates/assets/css/error.css | 5 ++ templates/assets/css/index.css | 4 + templates/assets/img/favicon.png | Bin 0 -> 45226 bytes templates/error.html | 14 ++++ templates/index.html | 21 +++++ 7 files changed, 188 insertions(+) create mode 100644 main.go create mode 100644 templates/about.html create mode 100644 templates/assets/css/error.css create mode 100644 templates/assets/css/index.css create mode 100644 templates/assets/img/favicon.png create mode 100644 templates/error.html create mode 100644 templates/index.html diff --git a/main.go b/main.go new file mode 100644 index 0000000..6433f3c --- /dev/null +++ b/main.go @@ -0,0 +1,131 @@ +package main + +import ( + "fmt" + "html/template" + "log" + "net/http" + "path/filepath" +) + +func main() { + http.HandleFunc("/", mainHandler) + http.HandleFunc("/assets/", assetHandler) + + fmt.Println("Starting server on :3000 ...") + log.Fatal(http.ListenAndServe(":3000", nil)) +} + +func mainHandler(w http.ResponseWriter, r *http.Request) { + // Sanitize the path to prevent directory traversal attacks + relPath := r.URL.Path + if relPath == "/" { + relPath = "/index" + } + + // Check method + switch r.Method { + case http.MethodGet: + getHandler(relPath, w, r) + case http.MethodPost: + postHandler(relPath, w, r) + default: + errorPage(405, w, r) + + } + +} + +func getHandler(relPath string, w http.ResponseWriter, r *http.Request) { + tmplPath := filepath.Join("templates", filepath.Clean(relPath)+".html") + + // Parse the template + tmpl, err := template.ParseFiles(tmplPath) + if err != nil { + errorPage(404, w, r) + return + } + + // Execute the template + err = tmpl.Execute(w, nil) + if err != nil { + http.Error(w, "Error rendering template", http.StatusInternalServerError) + } +} + +func postHandler(relPath string, w http.ResponseWriter, r *http.Request) { + switch relPath { + case "/index": + indexPostHandler(w, r) + default: + errorPage(405, w, r) + } +} + +func indexPostHandler(w http.ResponseWriter, r *http.Request) { + // Parse the form data + err := r.ParseForm() + if err != nil { + errorPage(500, w, r) + return + } + + // Get the form data + message := r.FormValue("message") + + // Print the message to the console + log.Printf("Message: %s", message) + + // Create a map to hold the data + requestData := map[string]interface{}{ + "message": message, + } + + // Return a page with message + tmpl, err := template.ParseFiles("templates/index.html") + if err != nil { + errorPage(500, w, r) + return + } + + err = tmpl.Execute(w, requestData) + +} + +func errorPage(errorCode int, w http.ResponseWriter, r *http.Request) { + w.WriteHeader(errorCode) + tmpl, err := template.ParseFiles("templates/error.html") + if err != nil { + log.Printf("Error loading error page template: %v", err) + http.Error(w, "Error loading error page", http.StatusInternalServerError) + return + } + + errorMsgs := map[int]string{ + 404: "Page not found for " + r.URL.Path, + 405: "Method not allowed", + 500: "Internal server error", + } + + // Check if errorcode isn't in the map + if _, ok := errorMsgs[errorCode]; !ok { + errorCode = 500 + } + + // Correcting the initialization of the errorData map + errorData := map[string]interface{}{ + "short": errorCode, + "long": errorMsgs[errorCode], + } + + err = tmpl.Execute(w, errorData) + if err != nil { + log.Printf("Error executing error page template: %v", err) + http.Error(w, "Error rendering error page", http.StatusInternalServerError) + } +} + +func assetHandler(w http.ResponseWriter, r *http.Request) { + // Serve static files from templates/assets + http.ServeFile(w, r, filepath.Join("templates", filepath.Clean(r.URL.Path))) +} diff --git a/templates/about.html b/templates/about.html new file mode 100644 index 0000000..15acde2 --- /dev/null +++ b/templates/about.html @@ -0,0 +1,13 @@ + + + + + + Go HTML Template + + + + +

About page

+ + \ No newline at end of file diff --git a/templates/assets/css/error.css b/templates/assets/css/error.css new file mode 100644 index 0000000..7983fd7 --- /dev/null +++ b/templates/assets/css/error.css @@ -0,0 +1,5 @@ +html { + background-color: black; + color: white; + text-align: center; +} \ No newline at end of file diff --git a/templates/assets/css/index.css b/templates/assets/css/index.css new file mode 100644 index 0000000..5eccafa --- /dev/null +++ b/templates/assets/css/index.css @@ -0,0 +1,4 @@ +html { + background-color: black; + color: white; +} \ No newline at end of file diff --git a/templates/assets/img/favicon.png b/templates/assets/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..b32546439c0e3ef8050bd021c17f9d49df47165a GIT binary patch literal 45226 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

Y5JU^LJ3Ll~U-@w#NIc8In2h(? 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�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 literal 0 HcmV?d00001 diff --git a/templates/error.html b/templates/error.html new file mode 100644 index 0000000..ef8e6a7 --- /dev/null +++ b/templates/error.html @@ -0,0 +1,14 @@ + + + + + + Error {{.short}} + + + + +

Error {{.short}}

+

{{.long}}

+ + \ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..6e0048d --- /dev/null +++ b/templates/index.html @@ -0,0 +1,21 @@ + + + + + + Go HTML Template + + + + +

Hello, World!

+ + {{if .message}} +

{{.message}}

+ {{end}} +
+ + +
+ + \ No newline at end of file