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 }