github.com/EngineerKamesh/gofullstack@v0.0.0-20180609171605-d41341d7d4ee/volume1/section5/validationkit/validationkit.go (about)

     1  package validationkit
     2  
     3  import (
     4  	"log"
     5  	"math/rand"
     6  	"regexp"
     7  	"time"
     8  )
     9  
    10  const UsernameRegex string = `^@?(\w){1,15}$`
    11  
    12  func CheckUsernameSyntax(username string) bool {
    13  
    14  	validationResult := false
    15  	r, err := regexp.Compile(UsernameRegex)
    16  	if err != nil {
    17  		log.Fatal(err)
    18  	}
    19  	validationResult = r.MatchString(username)
    20  	return validationResult
    21  }
    22  
    23  func GenerateRandomUsername() string {
    24  
    25  	rand.Seed(time.Now().UnixNano())
    26  
    27  	usernameLength := rand.Intn(15) + 1
    28  
    29  	var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_")
    30  	b := make([]rune, usernameLength)
    31  	for i := range b {
    32  		b[i] = letterRunes[rand.Intn(len(letterRunes))]
    33  	}
    34  	randomUsername := string(b)
    35  
    36  	zeroOrOne := rand.Intn(2)
    37  	if zeroOrOne == 1 {
    38  		randomUsername = "@" + randomUsername
    39  	}
    40  	return randomUsername
    41  }