github.com/kubeshop/testkube@v1.17.23/pkg/api/v1/client/testsource.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 // NewTestSourceClient creates new TestSource client 11 func NewTestSourceClient(testSourceTransport Transport[testkube.TestSource]) TestSourceClient { 12 return TestSourceClient{ 13 testSourceTransport: testSourceTransport, 14 } 15 } 16 17 // TestSourceClient is a client for test sources 18 type TestSourceClient struct { 19 testSourceTransport Transport[testkube.TestSource] 20 } 21 22 // GetTestSource gets test source by name 23 func (c TestSourceClient) GetTestSource(name string) (testSource testkube.TestSource, err error) { 24 uri := c.testSourceTransport.GetURI("/test-sources/%s", name) 25 return c.testSourceTransport.Execute(http.MethodGet, uri, nil, nil) 26 } 27 28 // ListTestSources list all test sources 29 func (c TestSourceClient) ListTestSources(selector string) (testSources testkube.TestSources, err error) { 30 uri := c.testSourceTransport.GetURI("/test-sources") 31 params := map[string]string{ 32 "selector": selector, 33 } 34 35 return c.testSourceTransport.ExecuteMultiple(http.MethodGet, uri, nil, params) 36 } 37 38 // CreateTestSource creates new TestSource Custom Resource 39 func (c TestSourceClient) CreateTestSource(options UpsertTestSourceOptions) (testSource testkube.TestSource, err error) { 40 uri := c.testSourceTransport.GetURI("/test-sources") 41 request := testkube.TestSourceUpsertRequest(options) 42 43 body, err := json.Marshal(request) 44 if err != nil { 45 return testSource, err 46 } 47 48 return c.testSourceTransport.Execute(http.MethodPost, uri, body, nil) 49 } 50 51 // UpdateTestSource updates TestSource Custom Resource 52 func (c TestSourceClient) UpdateTestSource(options UpdateTestSourceOptions) (testSource testkube.TestSource, err error) { 53 name := "" 54 if options.Name != nil { 55 name = *options.Name 56 } 57 58 uri := c.testSourceTransport.GetURI("/test-sources/%s", name) 59 request := testkube.TestSourceUpdateRequest(options) 60 61 body, err := json.Marshal(request) 62 if err != nil { 63 return testSource, err 64 } 65 66 return c.testSourceTransport.Execute(http.MethodPatch, uri, body, nil) 67 } 68 69 // DeleteTestSources deletes all test sources 70 func (c TestSourceClient) DeleteTestSources(selector string) (err error) { 71 uri := c.testSourceTransport.GetURI("/test-sources") 72 return c.testSourceTransport.Delete(uri, selector, true) 73 } 74 75 // DeleteTestSource deletes single test source by name 76 func (c TestSourceClient) DeleteTestSource(name string) (err error) { 77 uri := c.testSourceTransport.GetURI("/test-sources/%s", name) 78 return c.testSourceTransport.Delete(uri, "", true) 79 }