Release notes & Roll version after i-release 1.2.0 -> 1.3.0
[nonrtric/plt/sme.git] / capifcore / internal / publishservice / publishservice.go
index bf79899..2fe5b2e 100644 (file)
@@ -118,8 +118,12 @@ func (ps *PublishService) PostApfIdServiceApis(ctx echo.Context, apfId string) e
                return sendCoreError(ctx, http.StatusBadRequest, fmt.Sprintf(errorMsg, "invalid format for service "+apfId))
        }
 
-       if ps.isServicePublished(newServiceAPIDescription) {
-               return sendCoreError(ctx, http.StatusForbidden, fmt.Sprintf(errorMsg, "service already published"))
+       if !ps.serviceRegister.IsPublishingFunctionRegistered(apfId) {
+               return sendCoreError(ctx, http.StatusForbidden, fmt.Sprintf(errorMsg, "api is only available for publishers "+apfId))
+       }
+
+       if err := ps.isServicePublished(newServiceAPIDescription); err != nil {
+               return sendCoreError(ctx, http.StatusForbidden, fmt.Sprintf(errorMsg, err))
        }
 
        if err := newServiceAPIDescription.Validate(); err != nil {
@@ -161,15 +165,15 @@ func (ps *PublishService) PostApfIdServiceApis(ctx echo.Context, apfId string) e
        return nil
 }
 
-func (ps *PublishService) isServicePublished(newService publishapi.ServiceAPIDescription) bool {
+func (ps *PublishService) isServicePublished(newService publishapi.ServiceAPIDescription) error {
        for _, services := range ps.publishedServices {
                for _, service := range services {
-                       if service.IsPublished(newService) {
-                               return true
+                       if err := service.ValidateAlreadyPublished(newService); err != nil {
+                               return err
                        }
                }
        }
-       return false
+       return nil
 }
 
 func (ps *PublishService) installHelmChart(newServiceAPIDescription publishapi.ServiceAPIDescription, ctx echo.Context) (bool, error) {