Initial commit: Эфир мессенджер
This commit is contained in:
40
internal/pkg/logger/logger.go
Normal file
40
internal/pkg/logger/logger.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"os"
|
||||
)
|
||||
|
||||
var Log *slog.Logger
|
||||
|
||||
func Init(environment string) {
|
||||
var handler slog.Handler
|
||||
if environment == "production" {
|
||||
handler = slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
|
||||
Level: slog.LevelInfo,
|
||||
})
|
||||
} else {
|
||||
handler = slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
|
||||
Level: slog.LevelDebug,
|
||||
})
|
||||
}
|
||||
|
||||
Log = slog.New(handler)
|
||||
slog.SetDefault(Log)
|
||||
}
|
||||
|
||||
func Info(msg string, args ...any) {
|
||||
Log.Info(msg, args...)
|
||||
}
|
||||
|
||||
func Debug(msg string, args ...any) {
|
||||
Log.Debug(msg, args...)
|
||||
}
|
||||
|
||||
func Error(msg string, args ...any) {
|
||||
Log.Error(msg, args...)
|
||||
}
|
||||
|
||||
func Warn(msg string, args ...any) {
|
||||
Log.Warn(msg, args...)
|
||||
}
|
||||
52
internal/pkg/validator/validator.go
Normal file
52
internal/pkg/validator/validator.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package validator
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
// ValidateLogin проверяет логин (только буквы, цифры, underscore, от 3 до 32 символов)
|
||||
func ValidateLogin(login string) bool {
|
||||
if len(login) < 3 || len(login) > 32 {
|
||||
return false
|
||||
}
|
||||
matched, _ := regexp.MatchString("^[a-zA-Z0-9_]+$", login)
|
||||
return matched
|
||||
}
|
||||
|
||||
// ValidatePassword проверяет пароль (минимум 6 символов)
|
||||
func ValidatePassword(password string) bool {
|
||||
return len(password) >= 6
|
||||
}
|
||||
|
||||
// SanitizeString очищает строку от лишних пробелов
|
||||
func SanitizeString(s string) string {
|
||||
return strings.TrimSpace(s)
|
||||
}
|
||||
|
||||
// ValidateDisplayName проверяет отображаемое имя (не более 100 символов)
|
||||
func ValidateDisplayName(name string) bool {
|
||||
return len(name) <= 100
|
||||
}
|
||||
|
||||
// ValidateBio проверяет биографию (не более 500 символов)
|
||||
func ValidateBio(bio string) bool {
|
||||
return len(bio) <= 500
|
||||
}
|
||||
|
||||
// IsValidUUID проверяет валидность UUID
|
||||
func IsValidUUID(uuid string) bool {
|
||||
matched, _ := regexp.MatchString("^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", uuid)
|
||||
return matched
|
||||
}
|
||||
|
||||
// ContainsOnlyPrintable проверяет, что строка содержит только печатаемые символы
|
||||
func ContainsOnlyPrintable(s string) bool {
|
||||
for _, r := range s {
|
||||
if !unicode.IsPrint(r) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
Reference in New Issue
Block a user