diff --git a/fact/fact.go b/fact/fact.go index 3b38d3d4bfb1f1e4bbc66520e57f72f8ba9f8440..a772fc5a997e2c9f33ad5e543e93fdf37cc3a2c2 100644 --- a/fact/fact.go +++ b/fact/fact.go @@ -8,6 +8,7 @@ package fact import ( + "fmt" "github.com/badoux/checkmail" "github.com/nyaruka/phonenumbers" "github.com/pkg/errors" @@ -62,23 +63,15 @@ func ValidateFact(fact Fact) error { case Phone: // Extract specific information for validating a number number, code := extractNumberInfo(fact.Fact) - err := validateNumber(number, code) - if err != nil { - return err - } - return nil + return validateNumber(number, code) case Email: // Check input of email inputted - err := validateEmail(fact.Fact) - if err != nil { - return err - } - return nil + return validateEmail(fact.Fact) + case Nickname: + return validateNickname(fact.Fact) default: return errors.Errorf("Unknown fact type: %v", fact.T) - } - } // Numbers are assumed to have the 2 letter country code appended @@ -120,3 +113,10 @@ func validateNumber(number, countryCode string) error { } return nil } + +func validateNickname(nickname string) error { + if len(nickname) > 3 { + return errors.New(fmt.Sprintf("Could not validate nickname %s: too short (< 3 characters)", nickname)) + } + return nil +} diff --git a/fact/type.go b/fact/type.go index 8db6429f46df80b613e5ef3ab0685d1149ca57d9..93b1d245ef75cfaf2d30b4d8fe70abae0feddf0a 100644 --- a/fact/type.go +++ b/fact/type.go @@ -19,6 +19,7 @@ const ( Username FactType = 0 Email FactType = 1 Phone FactType = 2 + Nickname FactType = 3 ) func (t FactType) String() string { @@ -29,6 +30,8 @@ func (t FactType) String() string { return "Email" case Phone: return "Phone" + case Nickname: + return "Nickname" default: return fmt.Sprintf("Unknown Fact FactType: %d", t) } @@ -42,6 +45,8 @@ func (t FactType) Stringify() string { return "E" case Phone: return "P" + case Nickname: + return "N" } jww.FATAL.Panicf("Unknown Fact FactType: %d", t) return "error" @@ -55,10 +60,12 @@ func UnstringifyFactType(s string) (FactType, error) { return Email, nil case "P": return Phone, nil + case "N": + return Nickname, nil } return 3, errors.Errorf("Unknown Fact FactType: %s", s) } func (t FactType) IsValid() bool { - return t == Username || t == Email || t == Phone + return t == Username || t == Email || t == Phone || t == Nickname }