From 14bcaabf7281309d5e5f7f48cac9bc4d857e444d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Ferreira?= Date: Wed, 18 Aug 2021 12:43:44 +0100 Subject: [PATCH 1/2] feat(name): Adds GenerateName function Generates a new Name from a name string --- resource/name.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resource/name.go b/resource/name.go index f91ca5d..5c3eaea 100644 --- a/resource/name.go +++ b/resource/name.go @@ -2,6 +2,7 @@ package resource import ( "strconv" + "strings" ) type Name struct { @@ -11,6 +12,13 @@ type Name struct { Id int64 } +func GenerateName(rawName string) *Name { + nameParts := strings.Split(rawName, "/") + nameCollection := nameParts[0] + nameID, _ := strconv.ParseInt(nameParts[1], 10, 64) + return NewName(nameCollection, nameID) +} + func NewName(collection string, id int64) *Name { return &Name{ Collection: collection, From f25eab14968ef0538e05a4fb655852c7594f350a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Ferreira?= Date: Tue, 21 Sep 2021 19:13:50 +0100 Subject: [PATCH 2/2] feat(name): makes sure ids are int64 --- validation/validation.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/validation/validation.go b/validation/validation.go index 9b57afb..5c220eb 100644 --- a/validation/validation.go +++ b/validation/validation.go @@ -2,6 +2,8 @@ package validation import ( "net/url" + "strconv" + "strings" "github.com/gobwas/glob" "k8s.io/apimachinery/pkg/util/validation/field" @@ -17,6 +19,15 @@ func ValidateResourceName(name, pattern string, fldPath *field.Path) ErrorList { allErrs = append(allErrs, Invalid(fldPath, name, "resource name does not match a valid pattern")) } + // Make sure the ids are int 64 + resourceParts := strings.Split(name, "/") + categoriesCount := len(resourceParts) / 2 + for catNumber := 0; catNumber < categoriesCount; catNumber++ { + _, err := strconv.ParseInt(resourceParts[catNumber*2+1], 10, 64) + if err != nil { + allErrs = append(allErrs, Invalid(fldPath, name, "resource ids must be valid int64")) + } + } return allErrs }