41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package domain
|
|
|
|
import "strings"
|
|
|
|
func validResourceID(id string) bool {
|
|
if !strings.Contains(id, "/") {
|
|
return strings.TrimSpace(id) != ""
|
|
}
|
|
if strings.Count(id, "/") != 1 {
|
|
return false
|
|
}
|
|
namespace, localID, _ := strings.Cut(id, "/")
|
|
return namespace != "" && localID != ""
|
|
}
|
|
|
|
func validResourceNamespace(namespace string) bool {
|
|
return strings.TrimSpace(namespace) != "" && !strings.Contains(namespace, "/")
|
|
}
|
|
|
|
func validLocalResourceKey(key string) bool {
|
|
return strings.TrimSpace(key) != "" && !strings.Contains(key, "/")
|
|
}
|
|
|
|
func qualifyResourceID(id, namespace string) (string, bool) {
|
|
if !validResourceID(id) || (namespace != "" && !validResourceNamespace(namespace)) {
|
|
return "", false
|
|
}
|
|
if strings.Contains(id, "/") || namespace == "" {
|
|
return id, true
|
|
}
|
|
return namespace + "/" + id, true
|
|
}
|
|
|
|
func resourceNamespaceFromID(id string) (string, bool) {
|
|
if !validResourceID(id) || !strings.Contains(id, "/") {
|
|
return "", false
|
|
}
|
|
namespace, _, _ := strings.Cut(id, "/")
|
|
return namespace, true
|
|
}
|