func GetHeaderValue(r *http.Request, key string) string {
	return r.Header.Get(key)
}
GetHeaderValue returns the input value from the given header
package utils
import (
	"log"
	"net/http"
	"strings"
)
const INPUT = "input"
func GetUserInput(r *http.Request) string {
	if value := GetParamValue(r, INPUT); value != "" {
		return value
	}
	if value := GetFormValue(r, INPUT); value != "" {
		return value
	}
	if value := GetCookieValue(r, INPUT); value != "" {
		return value
	}
	if value := GetHeaderValue(r, INPUT); value != "" {
		return value
	}
	return ""
}
func GetParamValue(r *http.Request, key string) string {
	return r.URL.Query().Get(key)
}
func GetPathValue(r *http.Request, positions ...int) string {
	splitURL := strings.Split(r.URL.Path, "/")
	var param []string
	for _, v := range positions {
		param = append(param, splitURL[v])
	}
	return strings.Join(param, "/")
}
func GetFormValue(r *http.Request, key string) string {
	return r.FormValue(key)
}
func GetCookieValue(r *http.Request, key string) string {
	cookie, err := r.Cookie(key)
	if err != nil {
		log.Printf("Could not get \"%s\" cooke value, error: %s\n", key, err.Error())
		return ""
	}
	return cookie.Value
}