Skip to content
Snippets Groups Projects
Commit d842cbc2 authored by Jonah Husson's avatar Jonah Husson
Browse files

add nickname fact type

parent bfbfb725
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
package fact package fact
import ( import (
"fmt"
"github.com/badoux/checkmail" "github.com/badoux/checkmail"
"github.com/nyaruka/phonenumbers" "github.com/nyaruka/phonenumbers"
"github.com/pkg/errors" "github.com/pkg/errors"
...@@ -62,23 +63,15 @@ func ValidateFact(fact Fact) error { ...@@ -62,23 +63,15 @@ func ValidateFact(fact Fact) error {
case Phone: case Phone:
// Extract specific information for validating a number // Extract specific information for validating a number
number, code := extractNumberInfo(fact.Fact) number, code := extractNumberInfo(fact.Fact)
err := validateNumber(number, code) return validateNumber(number, code)
if err != nil {
return err
}
return nil
case Email: case Email:
// Check input of email inputted // Check input of email inputted
err := validateEmail(fact.Fact) return validateEmail(fact.Fact)
if err != nil { case Nickname:
return err return validateNickname(fact.Fact)
}
return nil
default: default:
return errors.Errorf("Unknown fact type: %v", fact.T) return errors.Errorf("Unknown fact type: %v", fact.T)
} }
} }
// Numbers are assumed to have the 2 letter country code appended // Numbers are assumed to have the 2 letter country code appended
...@@ -120,3 +113,10 @@ func validateNumber(number, countryCode string) error { ...@@ -120,3 +113,10 @@ func validateNumber(number, countryCode string) error {
} }
return nil 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
}
...@@ -19,6 +19,7 @@ const ( ...@@ -19,6 +19,7 @@ const (
Username FactType = 0 Username FactType = 0
Email FactType = 1 Email FactType = 1
Phone FactType = 2 Phone FactType = 2
Nickname FactType = 3
) )
func (t FactType) String() string { func (t FactType) String() string {
...@@ -29,6 +30,8 @@ func (t FactType) String() string { ...@@ -29,6 +30,8 @@ func (t FactType) String() string {
return "Email" return "Email"
case Phone: case Phone:
return "Phone" return "Phone"
case Nickname:
return "Nickname"
default: default:
return fmt.Sprintf("Unknown Fact FactType: %d", t) return fmt.Sprintf("Unknown Fact FactType: %d", t)
} }
...@@ -42,6 +45,8 @@ func (t FactType) Stringify() string { ...@@ -42,6 +45,8 @@ func (t FactType) Stringify() string {
return "E" return "E"
case Phone: case Phone:
return "P" return "P"
case Nickname:
return "N"
} }
jww.FATAL.Panicf("Unknown Fact FactType: %d", t) jww.FATAL.Panicf("Unknown Fact FactType: %d", t)
return "error" return "error"
...@@ -55,10 +60,12 @@ func UnstringifyFactType(s string) (FactType, error) { ...@@ -55,10 +60,12 @@ func UnstringifyFactType(s string) (FactType, error) {
return Email, nil return Email, nil
case "P": case "P":
return Phone, nil return Phone, nil
case "N":
return Nickname, nil
} }
return 3, errors.Errorf("Unknown Fact FactType: %s", s) return 3, errors.Errorf("Unknown Fact FactType: %s", s)
} }
func (t FactType) IsValid() bool { func (t FactType) IsValid() bool {
return t == Username || t == Email || t == Phone return t == Username || t == Email || t == Phone || t == Nickname
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment