Files
2024-06-21 21:05:44 +10:00

54 lines
977 B
Go

package plg_starter_http
import (
"fmt"
"net/http"
"time"
. "github.com/mickael-kerjean/filestash/server/common"
"github.com/gorilla/mux"
)
func init() {
Hooks.Register.Starter(func(r *mux.Router) {
Log.Info("[http] starting ...")
port := Config.Get("general.port").Int()
srv := &http.Server{
Addr: fmt.Sprintf(":%d", port),
Handler: r,
}
go ensureAppHasBooted(
fmt.Sprintf("http://127.0.0.1:%d%s", port, WithBase("/about")),
fmt.Sprintf("[http] listening on :%d", port),
)
if err := srv.ListenAndServe(); err != nil {
Log.Error("error: %v", err)
return
}
})
}
func ensureAppHasBooted(address string, message string) {
i := 0
for {
if i > 10 {
Log.Warning("[http] didn't boot")
break
}
time.Sleep(250 * time.Millisecond)
res, err := http.Get(address)
if err != nil {
i += 1
continue
}
res.Body.Close()
if res.StatusCode != http.StatusOK {
i += 1
continue
}
Log.Info(message)
break
}
}