41 lines
860 B
Go
41 lines
860 B
Go
package restgallery
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"net/url"
|
|
|
|
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/components/gallery"
|
|
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/pkg/config"
|
|
"github.com/a-h/templ"
|
|
)
|
|
|
|
type Handler struct {
|
|
http.Handler
|
|
srv galleryService
|
|
r renderer
|
|
cfg *config.Gallery
|
|
}
|
|
|
|
func New(renderer renderer, srv galleryService, cfg *config.Gallery) *Handler {
|
|
mux := http.NewServeMux()
|
|
h := &Handler{
|
|
Handler: mux,
|
|
srv: srv,
|
|
r: renderer,
|
|
cfg: cfg,
|
|
}
|
|
|
|
mux.HandleFunc(fmt.Sprintf("GET /%s", url.PathEscape(cfg.Path)), h.gallery)
|
|
return h
|
|
}
|
|
|
|
type galleryService interface {
|
|
GetGallery(ctx context.Context, width int) (gallery gallery.Gallery, err error)
|
|
}
|
|
type renderer interface {
|
|
Render(ctx context.Context, w io.Writer, r *http.Request, component templ.Component)
|
|
}
|