Browse Source

add keyword checker

Xiang Li 12 years ago
parent
commit
756b2cc750
2 changed files with 29 additions and 2 deletions
  1. 28 1
      store/keywords.go
  2. 1 1
      store/store_test.go

+ 28 - 1
store/keywords.go

@@ -1,8 +1,35 @@
 package store
 
+import (
+	"fmt"
+	"path"
+	"strings"
+)
+
 // keywords for internal useage
+// Key for string keyword; Value for only checking prefix
 var keywords = map[string]bool{
 	"/acoounts":       true,
 	"/ephemeralNodes": true,
-	"/machines":	   true,
+	"/machines":       true,
+}
+
+// CheckKeyWord will check if the key contains the keyword.
+// For now, we only check for prefix.
+func CheckKeyword(key string) bool {
+	key = path.Clean("/" + key)
+
+	// find the second "/"
+	i := strings.Index(key[1:], "/")
+
+	var prefix string
+
+	if i == -1 {
+		prefix = key
+	} else {
+		prefix = key[:i+1]
+	}
+	_, ok := keywords[prefix]
+
+	return ok
 }

+ 1 - 1
store/store_test.go

@@ -36,7 +36,7 @@ func TestSaveAndRecovery(t *testing.T) {
 
 	s := CreateStore(100)
 	s.Set("foo", "bar", time.Unix(0, 0), 1)
-	s.Set("foo2", "bar2", time.Now().Add(time.Second * 5), 2)
+	s.Set("foo2", "bar2", time.Now().Add(time.Second*5), 2)
 	state, err := s.Save()
 
 	if err != nil {