commit 07fd6b4af84cc2cf07f0e8adedbb8eba37d620c0
parent 4ce7bb45e83a28081a5ffc563341bb2354e53f65
Author: Andreas Gruhler <andreas.gruhler@adfinis.com>
Date:   Wed, 16 Aug 2023 00:23:22 +0200
feat(ui): render ui based on user agent
Diffstat:
4 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/go.mod b/go.mod
@@ -2,11 +2,15 @@ module hivedav
 
 go 1.21.0
 
-require github.com/spf13/viper v1.16.0
+require (
+	github.com/pquerna/termchalk v0.0.0-20140809212720-8cc5932700ba
+	github.com/spf13/viper v1.16.0
+)
 
 require (
 	github.com/fsnotify/fsnotify v1.6.0 // indirect
 	github.com/hashicorp/hcl v1.0.0 // indirect
+	github.com/kr/text v0.2.0 // indirect
 	github.com/magiconair/properties v1.8.7 // indirect
 	github.com/mitchellh/mapstructure v1.5.0 // indirect
 	github.com/pelletier/go-toml/v2 v2.0.8 // indirect
diff --git a/go.sum b/go.sum
@@ -46,6 +46,7 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
 github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
 github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
 github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -145,6 +146,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/pquerna/termchalk v0.0.0-20140809212720-8cc5932700ba h1:OLlV7v3MejdMam8+NV7mATPrV2sC/eP5FvOIqL73NYQ=
+github.com/pquerna/termchalk v0.0.0-20140809212720-8cc5932700ba/go.mod h1:LPpM4y5i8FCoTn8l4qLbjR+eNia/BCUkDkXimr2i43U=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
diff --git a/main.go b/main.go
@@ -1,8 +1,8 @@
 package main
 
 import (
-	"fmt"
 	"hivedav/config"
+	"fmt"
 	"log"
 	"net/http"
 )
diff --git a/server.go b/server.go
@@ -3,7 +3,11 @@ package main
 import (
 	"hivedav/config"
 	"io"
+	"fmt"
+	"strings"
 	"net/http"
+	"github.com/pquerna/termchalk/ansistyle"
+	"github.com/pquerna/termchalk/prettytable"
 )
 
 type Server struct {
@@ -11,8 +15,21 @@ type Server struct {
 }
 
 func (s *Server) ServeHTTP(w http.ResponseWriter, req *http.Request) {
-	io.WriteString(w, "Welcome to the hive\n")
-	io.WriteString(w, "<Calendar here>\n")
+	userAgent := req.Header.Get("user-agent");
+
+	if strings.Contains(userAgent, "curl") {
+		w.Header().Set("Content-Type", "text/plain")
+		io.WriteString(w, ansistyle.Bold.Open + "Welcome to the " + ansistyle.Bold.Close)
+		io.WriteString(w, ansistyle.BgRed.Open + "hive!" + ansistyle.BgBlue.Close + "\n")
+
+		pt := prettytable.New([]string{"Time      ", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"})
+		pt.AddRow("08:00 - 09:00", "", "", "busy", "", "")
+		io.WriteString(w, fmt.Sprint(pt))
+	} else {
+		w.Header().Set("Content-Type", "text/html")
+		io.WriteString(w, "<h1>Welcome to the hive!</h1>")
+		io.WriteString(w, "<p>HTML Calendar here</p>")
+	}
 }
 
 func (s *Server) showCubicles() {