pkg/client/nexus/cleanuppolicy.go (93 lines of code) (raw):
package nexus
import (
"context"
"fmt"
"net/http"
"github.com/go-resty/resty/v2"
)
type NexusCleanupPolicy struct {
Name string `json:"name"`
Format string `json:"format"`
Notes string `json:"notes"`
CriteriaReleaseType *string `json:"criteriaReleaseType"`
CriteriaLastDownloaded *int `json:"criteriaLastDownloaded"`
CriteriaLastBlobUpdated *int `json:"criteriaLastBlobUpdated"`
CriteriaAssetRegex *string `json:"criteriaAssetRegex"`
}
type NexusCleanupPolicyClient struct {
config ClientConfig
}
func NewNexusCleanupPolicyClient(config ClientConfig) *NexusCleanupPolicyClient {
return &NexusCleanupPolicyClient{config: config}
}
func (s *NexusCleanupPolicyClient) Get(ctx context.Context, name string) (*NexusCleanupPolicy, error) {
res := &NexusCleanupPolicy{}
resp, err := s.r(ctx).
SetPathParams(map[string]string{
"name": name,
}).
SetResult(res).
Get("/service/rest/internal/cleanup-policies/{name}")
if err != nil {
return nil, fmt.Errorf("failed to get cleanup policy: %w", err)
}
if resp.IsError() {
if resp.StatusCode() == http.StatusNotFound {
return nil, ErrNotFound
}
return nil, fmt.Errorf("failed to get cleanup policy: %s", resp.String())
}
return res, nil
}
func (s *NexusCleanupPolicyClient) Create(ctx context.Context, policy *NexusCleanupPolicy) error {
resp, err := s.r(ctx).
SetBody(policy).
Post("/service/rest/internal/cleanup-policies")
if err != nil {
return fmt.Errorf("failed to create cleanup policy: %w", err)
}
if resp.IsError() {
return fmt.Errorf("failed to create cleanup policy: %s", resp.String())
}
return nil
}
func (s *NexusCleanupPolicyClient) Update(ctx context.Context, name string, policy *NexusCleanupPolicy) error {
resp, err := s.r(ctx).
SetPathParams(map[string]string{
"name": name,
}).
SetBody(policy).
Put("/service/rest/internal/cleanup-policies/{name}")
if err != nil {
return fmt.Errorf("failed to update cleanup policy: %w", err)
}
if resp.IsError() {
return fmt.Errorf("failed to update cleanup policy: %s", resp.String())
}
return nil
}
func (s *NexusCleanupPolicyClient) Delete(ctx context.Context, name string) error {
resp, err := s.r(ctx).
SetPathParams(map[string]string{
"name": name,
}).
Delete("/service/rest/internal/cleanup-policies/{name}")
if err != nil {
return fmt.Errorf("failed to delete cleanup policy: %w", err)
}
if resp.IsError() {
if resp.StatusCode() == http.StatusNotFound {
return ErrNotFound
}
return fmt.Errorf("failed to delete cleanup policy: %s", resp.String())
}
return nil
}
func (s *NexusCleanupPolicyClient) r(ctx context.Context) *resty.Request {
return resty.New().
SetBaseURL(s.config.BaseURL).
SetBasicAuth(s.config.UserName, s.config.Password).
R().
ForceContentType("application/json").
SetContext(ctx)
}