updated deps; updated healthchecks.io integration
This commit is contained in:
25
vendor/maunium.net/go/mautrix/id/userid.go
generated
vendored
25
vendor/maunium.net/go/mautrix/id/userid.go
generated
vendored
@@ -36,19 +36,34 @@ var (
|
||||
ErrEmptyLocalpart = errors.New("empty localparts are not allowed")
|
||||
)
|
||||
|
||||
// ParseCommonIdentifier parses a common identifier according to https://spec.matrix.org/v1.9/appendices/#common-identifier-format
|
||||
func ParseCommonIdentifier[Stringish ~string](identifier Stringish) (sigil byte, localpart, homeserver string) {
|
||||
if len(identifier) == 0 {
|
||||
return
|
||||
}
|
||||
sigil = identifier[0]
|
||||
strIdentifier := string(identifier)
|
||||
if strings.ContainsRune(strIdentifier, ':') {
|
||||
parts := strings.SplitN(strIdentifier, ":", 2)
|
||||
localpart = parts[0][1:]
|
||||
homeserver = parts[1]
|
||||
} else {
|
||||
localpart = strIdentifier[1:]
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Parse parses the user ID into the localpart and server name.
|
||||
//
|
||||
// Note that this only enforces very basic user ID formatting requirements: user IDs start with
|
||||
// a @, and contain a : after the @. If you want to enforce localpart validity, see the
|
||||
// ParseAndValidate and ValidateUserLocalpart functions.
|
||||
func (userID UserID) Parse() (localpart, homeserver string, err error) {
|
||||
if len(userID) == 0 || userID[0] != '@' || !strings.ContainsRune(string(userID), ':') {
|
||||
// This error wrapping lets you use errors.Is() nicely even though the message contains the user ID
|
||||
var sigil byte
|
||||
sigil, localpart, homeserver = ParseCommonIdentifier(userID)
|
||||
if sigil != '@' || homeserver == "" {
|
||||
err = fmt.Errorf("'%s' %w", userID, ErrInvalidUserID)
|
||||
return
|
||||
}
|
||||
parts := strings.SplitN(string(userID), ":", 2)
|
||||
localpart, homeserver = strings.TrimPrefix(parts[0], "@"), parts[1]
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user