package model import "strings" // sanitizeShareName creates a valid ShareName matching the regex: ^[a-z0-9]+([a-z\-\_0-9]+|(__)?)[a-z0-9]*$ func SanitizeShareName(name string) string { // Convert to lowercase and replace spaces with hyphens shareName := strings.ToLower(name) shareName = strings.ReplaceAll(shareName, " ", "-") // Remove any characters that aren't lowercase letters, numbers, hyphens, or underscores var validShareName strings.Builder for _, r := range shareName { if (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') || r == '-' || r == '_' { validShareName.WriteRune(r) } } result := validShareName.String() if result == "" { return "matrixbridge" // fallback if no valid characters } // Ensure it starts with alphanumeric for result != "" && (result[0] == '-' || result[0] == '_') { result = result[1:] } // Ensure it ends with alphanumeric for result != "" && (result[len(result)-1] == '-' || result[len(result)-1] == '_') { result = result[:len(result)-1] } // Final fallback check if result == "" { return "matrixbridge" } return result }