54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package app
|
|
|
|
import (
|
|
"strings"
|
|
"unicode/utf8"
|
|
|
|
"github.com/geo-platform/tenant-api/internal/shared/response"
|
|
)
|
|
|
|
const (
|
|
kolDisplayNameMaxLen = 40
|
|
kolBioMaxLen = 500
|
|
kolAvatarURLPrefix = "/api/public/assets/"
|
|
)
|
|
|
|
func validateKolDisplayName(raw string) (string, error) {
|
|
v := strings.TrimSpace(raw)
|
|
if v == "" {
|
|
return "", response.ErrBadRequest(40001, "kol_profile_invalid_display_name", "display_name is required")
|
|
}
|
|
if utf8.RuneCountInString(v) > kolDisplayNameMaxLen {
|
|
return "", response.ErrBadRequest(40001, "kol_profile_invalid_display_name", "display_name must be at most 40 characters")
|
|
}
|
|
return v, nil
|
|
}
|
|
|
|
func validateKolBio(raw *string) (*string, error) {
|
|
if raw == nil {
|
|
return nil, nil
|
|
}
|
|
v := strings.TrimSpace(*raw)
|
|
if v == "" {
|
|
return nil, nil
|
|
}
|
|
if utf8.RuneCountInString(v) > kolBioMaxLen {
|
|
return nil, response.ErrBadRequest(40002, "kol_profile_invalid_bio", "bio must be at most 500 characters")
|
|
}
|
|
return &v, nil
|
|
}
|
|
|
|
func validateKolAvatarURL(raw *string) (*string, error) {
|
|
if raw == nil {
|
|
return nil, nil
|
|
}
|
|
v := strings.TrimSpace(*raw)
|
|
if v == "" {
|
|
return nil, nil
|
|
}
|
|
if !strings.HasPrefix(v, kolAvatarURLPrefix) {
|
|
return nil, response.ErrBadRequest(40003, "kol_profile_invalid_avatar_url", "avatar_url must be an asset path served by this service")
|
|
}
|
|
return &v, nil
|
|
}
|