Files
Home-Vue-Go/internal/api/validation.go
T

33 lines
780 B
Go

package api
import (
"net/url"
"path"
"strings"
)
func validHTTPURL(value string) bool {
parsed, err := url.ParseRequestURI(strings.TrimSpace(value))
return err == nil && parsed.Host != "" && (parsed.Scheme == "http" || parsed.Scheme == "https")
}
func validContactURL(value string) bool {
value = strings.TrimSpace(value)
parsed, err := url.ParseRequestURI(value)
if err != nil {
return false
}
if parsed.Scheme == "http" || parsed.Scheme == "https" {
return parsed.Host != ""
}
return parsed.Scheme == "mailto" || parsed.Scheme == "tel"
}
func validQRCode(value string) bool {
value = strings.TrimSpace(value)
if strings.HasPrefix(value, "/uploads/") {
return !strings.Contains(value, "\\") && path.Clean(value) == value
}
return validHTTPURL(value)
}