qcc/internal/identity/number.go
2026-06-30 12:52:09 +03:00

40 lines
808 B
Go

package identity
import (
"crypto/rand"
"fmt"
"math/big"
"strings"
)
func GenerateNumber(prefix string) string {
n1 := randInt(100, 999)
n2 := randInt(100, 999)
n3 := randInt(1000, 9999)
return fmt.Sprintf("%s %d %d %d", prefix, n1, n2, n3)
}
func randInt(min, max int) int {
n, _ := rand.Int(rand.Reader, big.NewInt(int64(max-min+1)))
return min + int(n.Int64())
}
func NormalizeNumber(s string) string {
s = strings.TrimSpace(s)
parts := strings.Fields(s)
if len(parts) == 4 && strings.HasPrefix(parts[0], "+") {
return fmt.Sprintf("%s %s %s %s", parts[0], parts[1], parts[2], parts[3])
}
return s
}
func ValidateNumber(s string) bool {
parts := strings.Fields(s)
if len(parts) != 4 {
return false
}
if len(parts[0]) < 2 || parts[0][0] != '+' {
return false
}
return true
}