48 lines
965 B
Go
48 lines
965 B
Go
|
package store
|
||
|
|
||
|
import (
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// CreateEndpoints creates a list of endpoints given the right scheme
|
||
|
func CreateEndpoints(addrs []string, scheme string) (entries []string) {
|
||
|
for _, addr := range addrs {
|
||
|
entries = append(entries, scheme+"://"+addr)
|
||
|
}
|
||
|
return entries
|
||
|
}
|
||
|
|
||
|
// Normalize the key for each store to the form:
|
||
|
//
|
||
|
// /path/to/key
|
||
|
//
|
||
|
func Normalize(key string) string {
|
||
|
return "/" + join(SplitKey(key))
|
||
|
}
|
||
|
|
||
|
// GetDirectory gets the full directory part of
|
||
|
// the key to the form:
|
||
|
//
|
||
|
// /path/to/
|
||
|
//
|
||
|
func GetDirectory(key string) string {
|
||
|
parts := SplitKey(key)
|
||
|
parts = parts[:len(parts)-1]
|
||
|
return "/" + join(parts)
|
||
|
}
|
||
|
|
||
|
// SplitKey splits the key to extract path informations
|
||
|
func SplitKey(key string) (path []string) {
|
||
|
if strings.Contains(key, "/") {
|
||
|
path = strings.Split(key, "/")
|
||
|
} else {
|
||
|
path = []string{key}
|
||
|
}
|
||
|
return path
|
||
|
}
|
||
|
|
||
|
// join the path parts with '/'
|
||
|
func join(parts []string) string {
|
||
|
return strings.Join(parts, "/")
|
||
|
}
|