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 {
	GetGallerySet(ctx context.Context) (gallerySet gallery.Set, err error)
}
type renderer interface {
	Render(ctx context.Context, w io.Writer, r *http.Request, component templ.Component)
}
