func Listen(datadir, binding string, loglevel log.Level) error { var err error dataStore, err = helper.DefaultStore(datadir) if err != nil { return errgo.Notef(err, "can not get data store") } router := httprouter.New() // Router handler router.MethodNotAllowed = httphelper.HandlerLoggerHTTP(httphelper.PageRouterMethodNotAllowed) router.NotFound = httphelper.HandlerLoggerHTTP(httphelper.PageRouterNotFound) // Root and Favicon router.GET("/", httphelper.HandlerLoggerRouter(pageRoot)) router.GET("/favicon.ico", httphelper.HandlerLoggerRouter(pageFavicon)) // Show router.GET("/show/:type/", httphelper.HandlerLoggerRouter(pageShow)) router.GET("/show/:type/:project", httphelper.HandlerLoggerRouter(pageShow)) log.Info("Listening on ", binding) err = http.ListenAndServe(binding, router) if err != nil { return errgo.Notef(err, "can not listen to binding") } return nil }
func main() { log.Info("Starting") go func() { router := httprouter.New() // Router handler router.MethodNotAllowed = httphelper.HandlerLoggerHTTP(httphelper.PageRouterMethodNotAllowed) router.NotFound = httphelper.HandlerLoggerHTTP(httphelper.PageRouterNotFound) // Root and Favicon router.GET("/", httphelper.HandlerLoggerRouter(pageRoot)) router.GET("/favicon.ico", httphelper.HandlerLoggerRouter(httphelper.PageMinimalFavicon)) // Gallery router.GET("/gallery/*path", httphelper.HandlerLoggerRouter(pageGallery)) log.Info("Start serving files on ", FlagBindingGallery) log.Fatal(http.ListenAndServe(FlagBindingGallery, router)) }() go func() { if FlagBindingMetrics != "" { log.Info("Starting Metrics", FlagBindingMetrics) http.Handle("/metrics", prometheus.Handler()) go http.ListenAndServe(FlagBindingMetrics, nil) } }() log.Debug("Waiting for interrupt signal") httphelper.WaitForStopSignal() log.Info("Stopping") }
func main() { if FlagLogFile != "" { logfile, err := os.OpenFile(FlagLogFile, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0644) if err != nil { log.Fatal(errgo.Notef(err, "can not open logfile for writing")) } defer logfile.Close() log.SetOutput(logfile) } log.Info("Starting buchführung api v", BuildVersion, " +", BuildTime) err := initDatabase() if err != nil { log.Fatal(errgo.Notef(err, "can not initialize database")) } go func() { router := httprouter.New() // Router handler router.MethodNotAllowed = httphelper.HandlerLoggerHTTP(httphelper.PageRouterMethodNotAllowed) router.NotFound = httphelper.HandlerLoggerHTTP(httphelper.PageRouterNotFound) // Root and Favicon router.GET("/", httphelper.HandlerLoggerRouter(pageRoot)) router.GET("/favicon.ico", httphelper.HandlerLoggerRouter(httphelper.PageMinimalFavicon)) // API v0 // Accounts router.POST("/api/v0/account/add", httphelper.HandlerLoggerRouter(pageAPIV0AccountAdd)) router.GET("/api/v0/account/get/byid/:id", httphelper.HandlerLoggerRouter(pageAPIV0AccountGetByID)) router.GET("/api/v0/account/get/byname/:name", httphelper.HandlerLoggerRouter(pageAPIV0AccountGetByName)) router.GET("/api/v0/account/list", httphelper.HandlerLoggerRouter(pageAPIV0AccountList)) // Transactions router.POST("/api/v0/transaction/add", httphelper.HandlerLoggerRouter(pageAPIV0TransactionAdd)) router.GET("/api/v0/transaction/get/byid/:id", httphelper.HandlerLoggerRouter(pageAPIV0TransactionGetByID)) router.GET("/api/v0/transaction/list", httphelper.HandlerLoggerRouter(pageAPIV0TransactionList)) log.Info("Start serving api on ", FlagBindingAPI) log.Fatal(http.ListenAndServe(FlagBindingAPI, router)) }() go func() { if FlagBindingMetrics != "" { log.Info("Starting Metrics", FlagBindingMetrics) http.Handle("/metrics", prometheus.Handler()) http.ListenAndServe(FlagBindingMetrics, nil) } }() log.Debug("Waiting for interrupt signal") httphelper.WaitForStopSignal() log.Info("Stopping") }