hasshelper/web/server.go
2022-05-27 18:41:01 -05:00

44 lines
1.0 KiB
Go

package web
import (
"fmt"
"net/http"
"github.com/rs/zerolog"
"github.com/spf13/viper"
)
type configObj struct {
logger zerolog.Logger
port int
imageDir string
}
var config = configObj{}
// Run starts up the webserver part of hasshelper. It writes to exitch if
// the webserver ends unexpectedly. Config values will be read from viper.
func Run(rootLogger zerolog.Logger, exitch chan bool) {
config.logger = rootLogger.With().Str("name", "web").Logger()
config.port = viper.GetInt("webserver_port")
config.imageDir = viper.GetString("image_dir")
http.Handle("/img/", http.StripPrefix("/img", imageHandler()))
http.HandleFunc("/randimg/", randomImageFunc)
var logger = config.logger
logger.Info().
Int("port", config.port).
Str("imageDir", config.imageDir).
Msg("Webserver startup")
addr := fmt.Sprintf(":%d", config.port)
if err := http.ListenAndServe(addr, nil); err != nil {
logger.Error().Err(err).Msg("Webserver fatal error")
} else {
logger.Info().Msg("webserver shutting down")
}
exitch <- true
}