github.com/jfrog/jfrog-client-go@v1.40.2/distribution/services/deletelocal.go (about)

     1  package services
     2  
     3  import (
     4  	"net/http"
     5  
     6  	artifactoryUtils "github.com/jfrog/jfrog-client-go/artifactory/services/utils"
     7  	"github.com/jfrog/jfrog-client-go/auth"
     8  	"github.com/jfrog/jfrog-client-go/http/jfroghttpclient"
     9  	"github.com/jfrog/jfrog-client-go/utils/errorutils"
    10  	"github.com/jfrog/jfrog-client-go/utils/log"
    11  )
    12  
    13  // Delete distributable release bundle from the distribution service.
    14  type DeleteLocalReleaseBundleService struct {
    15  	DeleteReleaseBundleService
    16  }
    17  
    18  func NewDeleteLocalDistributionService(client *jfroghttpclient.JfrogHttpClient) *DeleteLocalReleaseBundleService {
    19  	return &DeleteLocalReleaseBundleService{DeleteReleaseBundleService: DeleteReleaseBundleService{client: client}}
    20  }
    21  
    22  func (dlr *DeleteLocalReleaseBundleService) GetDistDetails() auth.ServiceDetails {
    23  	return dlr.DistDetails
    24  }
    25  
    26  func (dlr *DeleteLocalReleaseBundleService) DeleteDistribution(deleteDistributionParams DeleteDistributionParams) error {
    27  	dlr.Sync = deleteDistributionParams.Sync
    28  	dlr.MaxWaitMinutes = deleteDistributionParams.MaxWaitMinutes
    29  	return dlr.execDeleteLocalDistribution(deleteDistributionParams.Name, deleteDistributionParams.Version)
    30  }
    31  
    32  func (dlr *DeleteLocalReleaseBundleService) execDeleteLocalDistribution(name, version string) error {
    33  	if dlr.IsDryRun() {
    34  		log.Info("[Dry run] Deleting release bundle:", name, version)
    35  		return nil
    36  	}
    37  	log.Info("Deleting release bundle:", name, version)
    38  	httpClientsDetails := dlr.DistDetails.CreateHttpClientDetails()
    39  	url := dlr.DistDetails.GetUrl() + "api/v1/release_bundle/" + name + "/" + version
    40  	artifactoryUtils.SetContentType("application/json", &httpClientsDetails.Headers)
    41  	resp, body, err := dlr.client.SendDelete(url, nil, &httpClientsDetails)
    42  	if err != nil {
    43  		return err
    44  	}
    45  	if err = errorutils.CheckResponseStatusWithBody(resp, body, http.StatusNoContent); err != nil {
    46  		return err
    47  	}
    48  	if dlr.Sync {
    49  		err := dlr.waitForDeletion(name, version)
    50  		if err != nil {
    51  			return err
    52  		}
    53  	}
    54  
    55  	log.Debug("Distribution response:", resp.Status)
    56  	return errorutils.CheckError(err)
    57  }