35 lines
690 B
Go
35 lines
690 B
Go
package resthome
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"net/http"
|
|
|
|
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/components/page"
|
|
"github.com/a-h/templ"
|
|
)
|
|
|
|
type Handler struct {
|
|
src pageService
|
|
r renderer
|
|
}
|
|
|
|
func New(mux *http.ServeMux, renderer renderer, srv pageService) *Handler {
|
|
h := &Handler{
|
|
src: srv,
|
|
r: renderer,
|
|
}
|
|
|
|
mux.HandleFunc("GET /{$}", h.home)
|
|
mux.HandleFunc("GET /{uid}", h.page)
|
|
return h
|
|
}
|
|
|
|
type pageService interface {
|
|
GetPages(ctx context.Context) ([]page.PageHeader, error)
|
|
GetPage(ctx context.Context, uid string) (page.Page, error)
|
|
}
|
|
type renderer interface {
|
|
Render(ctx context.Context, w io.Writer, r *http.Request, component templ.Component)
|
|
}
|