Add anyhttp support #17
2
go.mod
2
go.mod
@ -8,3 +8,5 @@ require (
|
|||||||
)
|
)
|
||||||
|
|
||||||
require golang.org/x/image v0.1.0 // indirect
|
require golang.org/x/image v0.1.0 // indirect
|
||||||
|
|
||||||
|
replace go.balki.me/anyhttp => ../anyhttp
|
||||||
|
2
go.sum
2
go.sum
@ -1,6 +1,4 @@
|
|||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
go.balki.me/anyhttp v0.2.0 h1:W6aGcmjF5CMJvJYtbYCywxnYoErFhFc76vwaqUG5FAQ=
|
|
||||||
go.balki.me/anyhttp v0.2.0/go.mod h1:JhfekOIjgVODoVqUCficjpIgmB3wwlB7jhN0eN2EZ/s=
|
|
||||||
go.oneofone.dev/resize v1.0.1 h1:HjpVar/4pxMGrjO44ThaMX1Q5UOBw0KxzbxxRDZPQuA=
|
go.oneofone.dev/resize v1.0.1 h1:HjpVar/4pxMGrjO44ThaMX1Q5UOBw0KxzbxxRDZPQuA=
|
||||||
go.oneofone.dev/resize v1.0.1/go.mod h1:zGFmn7q4EUZVlnDmxqf+b0mWpxsTt0MH2yx6ng8tpq0=
|
go.oneofone.dev/resize v1.0.1/go.mod h1:zGFmn7q4EUZVlnDmxqf+b0mWpxsTt0MH2yx6ng8tpq0=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
23
main.go
23
main.go
@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"embed"
|
"embed"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
@ -17,6 +18,7 @@ import (
|
|||||||
"log/slog"
|
"log/slog"
|
||||||
|
|
||||||
"go.balki.me/anyhttp"
|
"go.balki.me/anyhttp"
|
||||||
|
"go.balki.me/anyhttp/idle"
|
||||||
"go.balki.me/collage-maker/collage"
|
"go.balki.me/collage-maker/collage"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -90,10 +92,25 @@ func main() {
|
|||||||
w.WriteHeader(http.StatusInternalServerError)
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
w.Write([]byte(collageFile))
|
if _, err := w.Write([]byte(collageFile)); err != nil {
|
||||||
|
slog.Error("Failed to write collageFile", "error", err)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
if err := anyhttp.ListenAndServe(listenAddr, nil); err != nil {
|
addrType, server, err := anyhttp.ListenAndServeHTTP(listenAddr, idle.WrapHandler(nil))
|
||||||
slog.Error("http ListenAndServe failed", "error", err)
|
if err != nil {
|
||||||
|
slog.Error("anyhttp ListenAndServeHTTP failed", "error", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if addrType == anyhttp.SystemdFD {
|
||||||
|
if err := idle.Wait(1 * 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 {
|
||||||
|
select {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user