package v1

import (
	"net/http"
	"slices"

	config "github.com/yusing/go-proxy/internal/config/types"
	"github.com/yusing/go-proxy/internal/net/gphttp"
	"github.com/yusing/go-proxy/internal/route/routes"
)

func ListRoutesHandler(cfg config.ConfigInstance, w http.ResponseWriter, r *http.Request) {
	rts := make([]routes.Route, 0)
	provider := r.FormValue("provider")
	if provider == "" {
		gphttp.RespondJSON(w, r, slices.Collect(routes.Iter))
		return
	}
	for r := range routes.Iter {
		if r.ProviderName() == provider {
			rts = append(rts, r)
		}
	}
	gphttp.RespondJSON(w, r, rts)
}