X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=capifcore%2Finternal%2Finvokermanagementapi%2Ftypevalidation.go;h=10db3380ba8d38cf97257800e8677fd582b70381;hb=a98d361fe90ebac93c13a599529c4b743e11ace2;hp=b12ddfbb859758eb6c03cbb2b85e917083fab20b;hpb=b8e717a8c264a8b3f73626fc28c81ae65283ae80;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/internal/invokermanagementapi/typevalidation.go b/capifcore/internal/invokermanagementapi/typevalidation.go index b12ddfb..10db338 100644 --- a/capifcore/internal/invokermanagementapi/typevalidation.go +++ b/capifcore/internal/invokermanagementapi/typevalidation.go @@ -22,6 +22,8 @@ package invokermanagementapi import ( "errors" + "fmt" + "net/url" ) func (ied *APIInvokerEnrolmentDetails) Validate() error { @@ -29,9 +31,20 @@ func (ied *APIInvokerEnrolmentDetails) Validate() error { return errors.New("APIInvokerEnrolmentDetails missing required NotificationDestination") } + if _, err := url.ParseRequestURI(string(ied.NotificationDestination)); err != nil { + return fmt.Errorf("APIInvokerEnrolmentDetails has invalid NotificationDestination, err=%s", err) + } + if ied.OnboardingInformation.ApiInvokerPublicKey == "" { return errors.New("APIInvokerEnrolmentDetails missing required OnboardingInformation.ApiInvokerPublicKey") } return nil } + +func (ied *APIInvokerEnrolmentDetails) ValidateAlreadyOnboarded(otherInvoker APIInvokerEnrolmentDetails) error { + if ied.OnboardingInformation.ApiInvokerPublicKey == otherInvoker.OnboardingInformation.ApiInvokerPublicKey { + return errors.New("invoker with identical public key already onboarded") + } + return nil +}