You've already forked collage-maker
Add anyhttp support (#17)
Reviewed-on: #17 Fixes #11
This commit was merged in pull request #17.
This commit is contained in:
26
main.go
26
main.go
@@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/rand"
|
||||
"embed"
|
||||
"encoding/json"
|
||||
@@ -16,6 +17,8 @@ import (
|
||||
|
||||
"log/slog"
|
||||
|
||||
"go.balki.me/anyhttp"
|
||||
"go.balki.me/anyhttp/idle"
|
||||
"go.balki.me/collage-maker/collage"
|
||||
)
|
||||
|
||||
@@ -25,6 +28,7 @@ var (
|
||||
localAssets bool
|
||||
collageNameGen *nameGen
|
||||
imagesDirFs fs.FS
|
||||
listenAddr string
|
||||
|
||||
// go:embed web/*
|
||||
webFS embed.FS
|
||||
@@ -34,6 +38,7 @@ func main() {
|
||||
flag.StringVar(&imagesDir, "images-dir", "images", "Sets the images dir")
|
||||
flag.StringVar(&collageDir, "collages-dir", "collages", "Sets the collages dir")
|
||||
flag.BoolVar(&localAssets, "local-assets", false, "Serve local assets for testing")
|
||||
flag.StringVar(&listenAddr, "addr", "127.0.0.1:8767", "Web listen address, see https://pkg.go.dev/go.balki.me/anyhttp#readme-address-syntax")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
@@ -87,10 +92,25 @@ func main() {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
w.Write([]byte(collageFile))
|
||||
if _, err := w.Write([]byte(collageFile)); err != nil {
|
||||
slog.Error("Failed to write collageFile", "error", err)
|
||||
}
|
||||
})
|
||||
if err := http.ListenAndServe(":8767", nil); err != nil {
|
||||
slog.Error("http ListenAndServe failed", "error", err)
|
||||
addrType, server, done, err := anyhttp.Serve(listenAddr, idle.WrapHandler(nil))
|
||||
if err != nil {
|
||||
slog.Error("anyhttp Serve failed", "error", err)
|
||||
}
|
||||
|
||||
if addrType == anyhttp.SystemdFD {
|
||||
if err := idle.Wait(30 * time.Minute); err != nil {
|
||||
slog.Error("Failed to wait for idler", "error", err)
|
||||
}
|
||||
ctx, _ := context.WithTimeout(context.Background(), 1*time.Minute) // Don't want any stuck connections
|
||||
if err := server.Shutdown(ctx); err != nil {
|
||||
slog.Error("http server Shutdown failed", "error", err)
|
||||
}
|
||||
} else {
|
||||
<-done
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user