// Package httputil provides simple HTTP request/response utilities. package httputil import ( "net/http" c "github.com/juanatsap/cv-site/internal/constants" ) // Lang extracts and validates the language from query params. // Returns the language or default if invalid/missing. func Lang(r *http.Request) string { lang := r.URL.Query().Get("lang") if lang == "" || !c.SupportedLanguages[lang] { return c.LangDefault } return lang } // LangOrError extracts and validates language, returns error if invalid. // Returns (lang, true) if valid, ("", false) if invalid. func LangOrError(r *http.Request) (string, bool) { lang := r.URL.Query().Get("lang") if lang == "" { return c.LangDefault, true } if !c.SupportedLanguages[lang] { return "", false } return lang, true } // Query extracts a query parameter with optional default. func Query(r *http.Request, key, defaultVal string) string { val := r.URL.Query().Get(key) if val == "" { return defaultVal } return val } // QueryOneOf extracts a query parameter, validates against allowed values. // Returns the value if valid, or defaultVal if empty/invalid. func QueryOneOf(r *http.Request, key string, allowed []string, defaultVal string) string { val := r.URL.Query().Get(key) if val == "" { return defaultVal } for _, a := range allowed { if val == a { return val } } return defaultVal }