29 lines
590 B
Go
29 lines
590 B
Go
package http
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"source.toby3d.me/toby3d/home/internal/static"
|
|
)
|
|
|
|
type Handler struct {
|
|
static static.UseCase
|
|
}
|
|
|
|
func NewHandler(static static.UseCase) *Handler {
|
|
return &Handler{static: static}
|
|
}
|
|
|
|
func (h *Handler) Handle(ctx context.Context, path string) (http.Handler, error) {
|
|
static, err := h.static.Do(ctx, path)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("cannot handle static: %w", err)
|
|
}
|
|
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
http.ServeContent(w, r, static.Name(), static.ModTime(), static)
|
|
}), nil
|
|
}
|