github.com/kubeshop/testkube@v1.17.23/pkg/api/v1/client/template.go (about)

     1  package client
     2  
     3  import (
     4  	"encoding/json"
     5  	"net/http"
     6  
     7  	"github.com/kubeshop/testkube/pkg/api/v1/testkube"
     8  )
     9  
    10  // NewTemplateClient creates new Template client
    11  func NewTemplateClient(templateTransport Transport[testkube.Template]) TemplateClient {
    12  	return TemplateClient{
    13  		templateTransport: templateTransport,
    14  	}
    15  }
    16  
    17  // TemplateClient is a client for templates
    18  type TemplateClient struct {
    19  	templateTransport Transport[testkube.Template]
    20  }
    21  
    22  // GetTemplate gets template by name
    23  func (c TemplateClient) GetTemplate(name string) (template testkube.Template, err error) {
    24  	uri := c.templateTransport.GetURI("/templates/%s", name)
    25  	return c.templateTransport.Execute(http.MethodGet, uri, nil, nil)
    26  }
    27  
    28  // ListTemplates list all templates
    29  func (c TemplateClient) ListTemplates(selector string) (templates testkube.Templates, err error) {
    30  	uri := c.templateTransport.GetURI("/templates")
    31  	params := map[string]string{
    32  		"selector": selector,
    33  	}
    34  
    35  	return c.templateTransport.ExecuteMultiple(http.MethodGet, uri, nil, params)
    36  }
    37  
    38  // CreateTemplate creates new Template Custom Resource
    39  func (c TemplateClient) CreateTemplate(options CreateTemplateOptions) (template testkube.Template, err error) {
    40  	uri := c.templateTransport.GetURI("/templates")
    41  	request := testkube.TemplateCreateRequest(options)
    42  
    43  	body, err := json.Marshal(request)
    44  	if err != nil {
    45  		return template, err
    46  	}
    47  
    48  	return c.templateTransport.Execute(http.MethodPost, uri, body, nil)
    49  }
    50  
    51  // UpdateTemplate updates Template Custom Resource
    52  func (c TemplateClient) UpdateTemplate(options UpdateTemplateOptions) (template testkube.Template, err error) {
    53  	name := ""
    54  	if options.Name != nil {
    55  		name = *options.Name
    56  	}
    57  
    58  	uri := c.templateTransport.GetURI("/templates/%s", name)
    59  	request := testkube.TemplateUpdateRequest(options)
    60  
    61  	body, err := json.Marshal(request)
    62  	if err != nil {
    63  		return template, err
    64  	}
    65  
    66  	return c.templateTransport.Execute(http.MethodPatch, uri, body, nil)
    67  }
    68  
    69  // DeleteTemplates deletes all templates
    70  func (c TemplateClient) DeleteTemplates(selector string) (err error) {
    71  	uri := c.templateTransport.GetURI("/templates")
    72  	return c.templateTransport.Delete(uri, selector, true)
    73  }
    74  
    75  // DeleteTemplate deletes single template by name
    76  func (c TemplateClient) DeleteTemplate(name string) (err error) {
    77  	uri := c.templateTransport.GetURI("/templates/%s", name)
    78  	return c.templateTransport.Delete(uri, "", true)
    79  }