Files
ddns-updater/internal/server/handler.go
Quentin McGaw a86ddd42d1 HTTP server refactor (#164)
* Rework current server
* Update call is blocking
* Run first update without blocking
2021-02-08 21:22:05 -05:00

51 lines
1.0 KiB
Go

package server
import (
"context"
"net/http"
"text/template"
"time"
"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
"github.com/qdm12/ddns-updater/internal/data"
"github.com/qdm12/ddns-updater/internal/update"
)
type handlers struct {
ctx context.Context
// Objects
db data.Database
runner update.Runner
indexTemplate *template.Template
// Mockable functions
timeNow func() time.Time
}
func newHandler(ctx context.Context, rootURL, uiDir string,
db data.Database, runner update.Runner) http.Handler {
indexTemplate := template.Must(template.ParseFiles(uiDir + "/index.html"))
handlers := &handlers{
ctx: ctx,
db: db,
indexTemplate: indexTemplate,
// TODO build information
timeNow: time.Now,
runner: runner,
}
router := chi.NewRouter()
router.Use(middleware.Logger, middleware.CleanPath)
router.Get(rootURL+"/", handlers.index)
router.Get(rootURL+"/update", handlers.update)
// UI file server for other paths
fileServer(router, rootURL+"/", http.Dir(uiDir))
return router
}