the beginning of the idiots
This commit is contained in:
		
							
								
								
									
										95
									
								
								qwen/go/utils/utils.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								qwen/go/utils/utils.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,95 @@
 | 
			
		||||
package utils
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"crypto/rand"
 | 
			
		||||
	"encoding/base64"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GenerateRandomString generates a random string of the specified length
 | 
			
		||||
func GenerateRandomString(length int) (string, error) {
 | 
			
		||||
	bytes := make([]byte, length)
 | 
			
		||||
	if _, err := rand.Read(bytes); err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
	return base64.URLEncoding.EncodeToString(bytes), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ValidateEmail validates an email address using a regex
 | 
			
		||||
func ValidateEmail(email string) bool {
 | 
			
		||||
	re := regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`)
 | 
			
		||||
	return re.MatchString(email)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SanitizeString removes potentially dangerous characters from a string
 | 
			
		||||
func SanitizeString(input string) string {
 | 
			
		||||
	// Remove potentially dangerous characters/sequences
 | 
			
		||||
	sanitized := strings.ReplaceAll(input, "<", "")
 | 
			
		||||
	sanitized = strings.ReplaceAll(sanitized, ">", "")
 | 
			
		||||
	sanitized = strings.ReplaceAll(sanitized, "\"", "")
 | 
			
		||||
	sanitized = strings.ReplaceAll(sanitized, "'", "")
 | 
			
		||||
	sanitized = strings.ReplaceAll(sanitized, "\\", "")
 | 
			
		||||
	sanitized = strings.ReplaceAll(sanitized, "/", "")
 | 
			
		||||
	sanitized = strings.ReplaceAll(sanitized, ";", "")
 | 
			
		||||
	sanitized = strings.ReplaceAll(sanitized, "--", "")
 | 
			
		||||
	
 | 
			
		||||
	return strings.TrimSpace(sanitized)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsValidRole checks if a role is valid
 | 
			
		||||
func IsValidRole(role string) bool {
 | 
			
		||||
	switch role {
 | 
			
		||||
	case "job_seeker", "job_provider", "admin":
 | 
			
		||||
		return true
 | 
			
		||||
	default:
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsValidEmploymentType checks if an employment type is valid
 | 
			
		||||
func IsValidEmploymentType(empType string) bool {
 | 
			
		||||
	switch empType {
 | 
			
		||||
	case "full_time", "part_time", "contract", "internship":
 | 
			
		||||
		return true
 | 
			
		||||
	default:
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsValidExperienceLevel checks if an experience level is valid
 | 
			
		||||
func IsValidExperienceLevel(level string) bool {
 | 
			
		||||
	switch level {
 | 
			
		||||
	case "entry_level", "mid_level", "senior_level", "executive":
 | 
			
		||||
		return true
 | 
			
		||||
	default:
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsValidApplicationStatus checks if an application status is valid
 | 
			
		||||
func IsValidApplicationStatus(status string) bool {
 | 
			
		||||
	switch status {
 | 
			
		||||
	case "pending", "reviewed", "accepted", "rejected", "open", "closed", "filled":
 | 
			
		||||
		return true
 | 
			
		||||
	default:
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FormatPhoneNumber standardizes a phone number
 | 
			
		||||
func FormatPhoneNumber(phone string) string {
 | 
			
		||||
	// Remove all non-digit characters
 | 
			
		||||
	re := regexp.MustCompile(`\D`)
 | 
			
		||||
	digits := re.ReplaceAllString(phone, "")
 | 
			
		||||
	
 | 
			
		||||
	// If it starts with country code, format accordingly
 | 
			
		||||
	if len(digits) == 11 && digits[0] == '1' {
 | 
			
		||||
		return fmt.Sprintf("(%s) %s-%s", digits[1:4], digits[4:7], digits[7:11])
 | 
			
		||||
	} else if len(digits) == 10 {
 | 
			
		||||
		return fmt.Sprintf("(%s) %s-%s", digits[0:3], digits[3:6], digits[6:10])
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	return phone // Return original if can't format
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user