hasshelper/web/server.go

43 lines
992 B
Go

package web
import (
"fmt"
"net/http"
"github.com/spf13/viper"
"go.uber.org/zap"
)
type configObj struct {
logger *zap.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 *zap.Logger, exitch chan bool) {
config.logger = rootLogger.Named("web")
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.Sugar()
logger.Infow("Webserver startup",
"port", config.port,
"imageDir", config.imageDir)
addr := fmt.Sprintf(":%d", config.port)
if err := http.ListenAndServe(addr, nil); err != nil {
logger.Errorf("Webserver fatal error: %s", err)
} else {
logger.Info("webserver shutting down")
}
exitch <- true
}