librapi/main.go
2025-01-02 18:59:37 +01:00

54 lines
1023 B
Go

package main
import (
"context"
"librapi/server"
"librapi/services"
"os"
"os/signal"
"strconv"
"sync"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"librapi/handlers/login"
"librapi/handlers/upload"
)
const DefaultPort = 8585
var APIPort = sync.OnceValue[int](func() int {
port, err := strconv.Atoi(os.Getenv("API_PORT"))
if err != nil {
log.Debug().Err(err).Msg("unable to load API_PORT")
return DefaultPort
}
return port
})
func initLogger() {
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
log.Logger = log.With().Caller().Logger().Output(zerolog.ConsoleWriter{Out: os.Stderr})
}
func main() {
initLogger()
ctx, fnCancel := signal.NotifyContext(context.Background(), os.Kill, os.Interrupt)
defer fnCancel()
sessionStore := services.NewSessionStore(ctx)
srv := server.NewServer(
ctx,
APIPort(),
server.NewHandler("/upload", upload.Handler(sessionStore)),
server.NewHandler("/login", login.Handler(sessionStore)),
)
srv.Serve()
<-srv.Done()
<-sessionStore.Done()
}