Cache of the valid channel name regex
* Added a Benchmark to verify the performance * Now it is 10 times faster
This commit is contained in:
+8
-10
@@ -14,6 +14,12 @@ import (
|
||||
"regexp"
|
||||
)
|
||||
|
||||
var validChannelName *regexp.Regexp
|
||||
|
||||
func init() {
|
||||
validChannelName = regexp.MustCompile("^[A-Za-z0-9_\\-=@,.;]+$")
|
||||
}
|
||||
|
||||
// HashMAC Calculates the MAC signing with the given key and returns the hexadecimal encoded Result
|
||||
func HashMAC(message, key []byte) string {
|
||||
mac := hmac.New(sha256.New, key)
|
||||
@@ -25,18 +31,10 @@ func HashMAC(message, key []byte) string {
|
||||
|
||||
// GenerateSessionID Generate a new random Hash
|
||||
func GenerateSessionID() string {
|
||||
MAX := math.MaxInt64
|
||||
|
||||
return fmt.Sprintf("%d.%d", rand.Intn(MAX), rand.Intn(MAX))
|
||||
return fmt.Sprintf("%d.%d", rand.Intn(math.MaxInt64), rand.Intn(math.MaxInt64))
|
||||
}
|
||||
|
||||
// IsChannelNameValid Verify if the channel name is valid
|
||||
func IsChannelNameValid(channelName string) bool {
|
||||
matched, err := regexp.MatchString("^[A-Za-z0-9_\\-=@,.;]+$", channelName)
|
||||
|
||||
if err == nil && matched {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
return validChannelName.Match([]byte(channelName))
|
||||
}
|
||||
|
||||
@@ -9,6 +9,18 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func BenchmarkGenerateSession(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
GenerateSessionID()
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkIsChannelNameValid(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
IsChannelNameValid("hello-world")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGenerateSession(t *testing.T) {
|
||||
sessionID := GenerateSessionID()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user