package middleware

import (
	"context"
	"net/http"
	"strings"

	c "npm/internal/api/context"
)

// Expansion will determine whether the request should have objects expanded
// with ?expand=1 or ?expand=true
func Expansion(next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		expandStr := r.URL.Query().Get("expand")
		if expandStr != "" {
			ctx := r.Context()
			ctx = context.WithValue(ctx, c.ExpansionCtxKey, strings.Split(expandStr, ","))
			next.ServeHTTP(w, r.WithContext(ctx))
		} else {
			next.ServeHTTP(w, r)
		}
	})
}