Loading dependency_list_export.go +3 −4 Original line number Diff line number Diff line package gitlab import ( "bytes" "fmt" "io" "net/http" Loading Loading @@ -128,11 +127,11 @@ func (s *DependencyListExportService) DownloadDependencyListExport(id int64, opt return nil, nil, err } var sbomBuffer bytes.Buffer resp, err := s.client.Do(req, &sbomBuffer) preserver := &bodyPreserver{} resp, err := s.client.Do(req, preserver) if err != nil { return nil, resp, err } return &sbomBuffer, resp, nil return preserver.body, resp, nil } dependency_list_export_test.go +12 −4 Original line number Diff line number Diff line package gitlab import ( "bytes" "encoding/json" "io" "net/http" Loading Loading @@ -77,12 +76,21 @@ func TestDownloadDependencyListExport(t *testing.T) { sbomReader, _, err := client.DependencyListExport.DownloadDependencyListExport(5678) require.NoError(t, err) require.NotNil(t, sbomReader) expectedSbom, err := os.ReadFile("testdata/download_dependency_list_export.json") require.NoError(t, err) var want bytes.Buffer want.Write(expectedSbom) // GIVEN: A reader is returned // WHEN: We read the content gotContent, err := io.ReadAll(sbomReader) require.NoError(t, err) // THEN: The content should match the expected SBOM require.Equal(t, expectedSbom, gotContent) require.Equal(t, &want, sbomReader) // Clean up: Close the reader if it's a ReadCloser if rc, ok := sbomReader.(io.Closer); ok { rc.Close() } } dependency_proxy.go +7 −16 Original line number Diff line number Diff line Loading @@ -14,10 +14,7 @@ package gitlab import ( "fmt" "net/http" ) import "net/http" type ( DependencyProxyServiceInterface interface { Loading @@ -41,16 +38,10 @@ type ( var _ DependencyProxyServiceInterface = (*DependencyProxyService)(nil) func (s *DependencyProxyService) PurgeGroupDependencyProxy(gid any, options ...RequestOptionFunc) (*Response, error) { group, err := parseID(gid) if err != nil { return nil, err } u := fmt.Sprintf("groups/%s/dependency_proxy/cache", PathEscape(group)) req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) if err != nil { return nil, err } return s.client.Do(req, nil) _, resp, err := do[none](s.client, withMethod(http.MethodDelete), withPath("groups/%s/dependency_proxy/cache", GroupID{gid}), withRequestOpts(options...), ) return resp, err } deploy_tokens.go +46 −145 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package gitlab import ( "fmt" "net/http" "time" ) Loading Loading @@ -114,18 +113,10 @@ func (k DeployToken) String() string { } func (s *DeployTokensService) ListAllDeployTokens(options ...RequestOptionFunc) ([]*DeployToken, *Response, error) { req, err := s.client.NewRequest(http.MethodGet, "deploy_tokens", nil, options) if err != nil { return nil, nil, err } var ts []*DeployToken resp, err := s.client.Do(req, &ts) if err != nil { return nil, resp, err } return ts, resp, nil return do[[]*DeployToken](s.client, withPath("deploy_tokens"), withRequestOpts(options...), ) } // ListProjectDeployTokensOptions represents the available ListProjectDeployTokens() Loading @@ -138,45 +129,18 @@ type ListProjectDeployTokensOptions struct { } func (s *DeployTokensService) ListProjectDeployTokens(pid any, opt *ListProjectDeployTokensOptions, options ...RequestOptionFunc) ([]*DeployToken, *Response, error) { project, err := parseID(pid) if err != nil { return nil, nil, err } u := fmt.Sprintf("projects/%s/deploy_tokens", PathEscape(project)) req, err := s.client.NewRequest(http.MethodGet, u, opt, options) if err != nil { return nil, nil, err } var ts []*DeployToken resp, err := s.client.Do(req, &ts) if err != nil { return nil, resp, err } return ts, resp, nil return do[[]*DeployToken](s.client, withPath("projects/%s/deploy_tokens", ProjectID{pid}), withAPIOpts(opt), withRequestOpts(options...), ) } func (s *DeployTokensService) GetProjectDeployToken(pid any, deployToken int64, options ...RequestOptionFunc) (*DeployToken, *Response, error) { project, err := parseID(pid) if err != nil { return nil, nil, err } u := fmt.Sprintf("projects/%s/deploy_tokens/%d", PathEscape(project), deployToken) req, err := s.client.NewRequest(http.MethodGet, u, nil, options) if err != nil { return nil, nil, err } t := new(DeployToken) resp, err := s.client.Do(req, t) if err != nil { return nil, resp, err } return t, resp, nil return do[*DeployToken](s.client, withPath("projects/%s/deploy_tokens/%d", ProjectID{pid}, deployToken), withRequestOpts(options...), ) } // CreateProjectDeployTokenOptions represents the available CreateProjectDeployToken() options. Loading @@ -191,39 +155,21 @@ type CreateProjectDeployTokenOptions struct { } func (s *DeployTokensService) CreateProjectDeployToken(pid any, opt *CreateProjectDeployTokenOptions, options ...RequestOptionFunc) (*DeployToken, *Response, error) { project, err := parseID(pid) if err != nil { return nil, nil, err } u := fmt.Sprintf("projects/%s/deploy_tokens", PathEscape(project)) req, err := s.client.NewRequest(http.MethodPost, u, opt, options) if err != nil { return nil, nil, err } t := new(DeployToken) resp, err := s.client.Do(req, t) if err != nil { return nil, resp, err } return t, resp, nil return do[*DeployToken](s.client, withMethod(http.MethodPost), withPath("projects/%s/deploy_tokens", ProjectID{pid}), withAPIOpts(opt), withRequestOpts(options...), ) } func (s *DeployTokensService) DeleteProjectDeployToken(pid any, deployToken int64, options ...RequestOptionFunc) (*Response, error) { project, err := parseID(pid) if err != nil { return nil, err } u := fmt.Sprintf("projects/%s/deploy_tokens/%d", PathEscape(project), deployToken) req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) if err != nil { return nil, err } return s.client.Do(req, nil) _, resp, err := do[none](s.client, withMethod(http.MethodDelete), withPath("projects/%s/deploy_tokens/%d", ProjectID{pid}, deployToken), withRequestOpts(options...), ) return resp, err } // ListGroupDeployTokensOptions represents the available ListGroupDeployTokens() Loading @@ -236,45 +182,18 @@ type ListGroupDeployTokensOptions struct { } func (s *DeployTokensService) ListGroupDeployTokens(gid any, opt *ListGroupDeployTokensOptions, options ...RequestOptionFunc) ([]*DeployToken, *Response, error) { group, err := parseID(gid) if err != nil { return nil, nil, err } u := fmt.Sprintf("groups/%s/deploy_tokens", PathEscape(group)) req, err := s.client.NewRequest(http.MethodGet, u, opt, options) if err != nil { return nil, nil, err } var ts []*DeployToken resp, err := s.client.Do(req, &ts) if err != nil { return nil, resp, err } return ts, resp, nil return do[[]*DeployToken](s.client, withPath("groups/%s/deploy_tokens", GroupID{gid}), withAPIOpts(opt), withRequestOpts(options...), ) } func (s *DeployTokensService) GetGroupDeployToken(gid any, deployToken int64, options ...RequestOptionFunc) (*DeployToken, *Response, error) { group, err := parseID(gid) if err != nil { return nil, nil, err } u := fmt.Sprintf("groups/%s/deploy_tokens/%d", PathEscape(group), deployToken) req, err := s.client.NewRequest(http.MethodGet, u, nil, options) if err != nil { return nil, nil, err } t := new(DeployToken) resp, err := s.client.Do(req, t) if err != nil { return nil, resp, err } return t, resp, nil return do[*DeployToken](s.client, withPath("groups/%s/deploy_tokens/%d", GroupID{gid}, deployToken), withRequestOpts(options...), ) } // CreateGroupDeployTokenOptions represents the available CreateGroupDeployToken() options. Loading @@ -289,37 +208,19 @@ type CreateGroupDeployTokenOptions struct { } func (s *DeployTokensService) CreateGroupDeployToken(gid any, opt *CreateGroupDeployTokenOptions, options ...RequestOptionFunc) (*DeployToken, *Response, error) { group, err := parseID(gid) if err != nil { return nil, nil, err } u := fmt.Sprintf("groups/%s/deploy_tokens", PathEscape(group)) req, err := s.client.NewRequest(http.MethodPost, u, opt, options) if err != nil { return nil, nil, err } t := new(DeployToken) resp, err := s.client.Do(req, t) if err != nil { return nil, resp, err } return t, resp, nil return do[*DeployToken](s.client, withMethod(http.MethodPost), withPath("groups/%s/deploy_tokens", GroupID{gid}), withAPIOpts(opt), withRequestOpts(options...), ) } func (s *DeployTokensService) DeleteGroupDeployToken(gid any, deployToken int64, options ...RequestOptionFunc) (*Response, error) { group, err := parseID(gid) if err != nil { return nil, err } u := fmt.Sprintf("groups/%s/deploy_tokens/%d", PathEscape(group), deployToken) req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) if err != nil { return nil, err } return s.client.Do(req, nil) _, resp, err := do[none](s.client, withMethod(http.MethodDelete), withPath("groups/%s/deploy_tokens/%d", GroupID{gid}, deployToken), withRequestOpts(options...), ) return resp, err } discussions.go +144 −614 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
dependency_list_export.go +3 −4 Original line number Diff line number Diff line package gitlab import ( "bytes" "fmt" "io" "net/http" Loading Loading @@ -128,11 +127,11 @@ func (s *DependencyListExportService) DownloadDependencyListExport(id int64, opt return nil, nil, err } var sbomBuffer bytes.Buffer resp, err := s.client.Do(req, &sbomBuffer) preserver := &bodyPreserver{} resp, err := s.client.Do(req, preserver) if err != nil { return nil, resp, err } return &sbomBuffer, resp, nil return preserver.body, resp, nil }
dependency_list_export_test.go +12 −4 Original line number Diff line number Diff line package gitlab import ( "bytes" "encoding/json" "io" "net/http" Loading Loading @@ -77,12 +76,21 @@ func TestDownloadDependencyListExport(t *testing.T) { sbomReader, _, err := client.DependencyListExport.DownloadDependencyListExport(5678) require.NoError(t, err) require.NotNil(t, sbomReader) expectedSbom, err := os.ReadFile("testdata/download_dependency_list_export.json") require.NoError(t, err) var want bytes.Buffer want.Write(expectedSbom) // GIVEN: A reader is returned // WHEN: We read the content gotContent, err := io.ReadAll(sbomReader) require.NoError(t, err) // THEN: The content should match the expected SBOM require.Equal(t, expectedSbom, gotContent) require.Equal(t, &want, sbomReader) // Clean up: Close the reader if it's a ReadCloser if rc, ok := sbomReader.(io.Closer); ok { rc.Close() } }
dependency_proxy.go +7 −16 Original line number Diff line number Diff line Loading @@ -14,10 +14,7 @@ package gitlab import ( "fmt" "net/http" ) import "net/http" type ( DependencyProxyServiceInterface interface { Loading @@ -41,16 +38,10 @@ type ( var _ DependencyProxyServiceInterface = (*DependencyProxyService)(nil) func (s *DependencyProxyService) PurgeGroupDependencyProxy(gid any, options ...RequestOptionFunc) (*Response, error) { group, err := parseID(gid) if err != nil { return nil, err } u := fmt.Sprintf("groups/%s/dependency_proxy/cache", PathEscape(group)) req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) if err != nil { return nil, err } return s.client.Do(req, nil) _, resp, err := do[none](s.client, withMethod(http.MethodDelete), withPath("groups/%s/dependency_proxy/cache", GroupID{gid}), withRequestOpts(options...), ) return resp, err }
deploy_tokens.go +46 −145 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package gitlab import ( "fmt" "net/http" "time" ) Loading Loading @@ -114,18 +113,10 @@ func (k DeployToken) String() string { } func (s *DeployTokensService) ListAllDeployTokens(options ...RequestOptionFunc) ([]*DeployToken, *Response, error) { req, err := s.client.NewRequest(http.MethodGet, "deploy_tokens", nil, options) if err != nil { return nil, nil, err } var ts []*DeployToken resp, err := s.client.Do(req, &ts) if err != nil { return nil, resp, err } return ts, resp, nil return do[[]*DeployToken](s.client, withPath("deploy_tokens"), withRequestOpts(options...), ) } // ListProjectDeployTokensOptions represents the available ListProjectDeployTokens() Loading @@ -138,45 +129,18 @@ type ListProjectDeployTokensOptions struct { } func (s *DeployTokensService) ListProjectDeployTokens(pid any, opt *ListProjectDeployTokensOptions, options ...RequestOptionFunc) ([]*DeployToken, *Response, error) { project, err := parseID(pid) if err != nil { return nil, nil, err } u := fmt.Sprintf("projects/%s/deploy_tokens", PathEscape(project)) req, err := s.client.NewRequest(http.MethodGet, u, opt, options) if err != nil { return nil, nil, err } var ts []*DeployToken resp, err := s.client.Do(req, &ts) if err != nil { return nil, resp, err } return ts, resp, nil return do[[]*DeployToken](s.client, withPath("projects/%s/deploy_tokens", ProjectID{pid}), withAPIOpts(opt), withRequestOpts(options...), ) } func (s *DeployTokensService) GetProjectDeployToken(pid any, deployToken int64, options ...RequestOptionFunc) (*DeployToken, *Response, error) { project, err := parseID(pid) if err != nil { return nil, nil, err } u := fmt.Sprintf("projects/%s/deploy_tokens/%d", PathEscape(project), deployToken) req, err := s.client.NewRequest(http.MethodGet, u, nil, options) if err != nil { return nil, nil, err } t := new(DeployToken) resp, err := s.client.Do(req, t) if err != nil { return nil, resp, err } return t, resp, nil return do[*DeployToken](s.client, withPath("projects/%s/deploy_tokens/%d", ProjectID{pid}, deployToken), withRequestOpts(options...), ) } // CreateProjectDeployTokenOptions represents the available CreateProjectDeployToken() options. Loading @@ -191,39 +155,21 @@ type CreateProjectDeployTokenOptions struct { } func (s *DeployTokensService) CreateProjectDeployToken(pid any, opt *CreateProjectDeployTokenOptions, options ...RequestOptionFunc) (*DeployToken, *Response, error) { project, err := parseID(pid) if err != nil { return nil, nil, err } u := fmt.Sprintf("projects/%s/deploy_tokens", PathEscape(project)) req, err := s.client.NewRequest(http.MethodPost, u, opt, options) if err != nil { return nil, nil, err } t := new(DeployToken) resp, err := s.client.Do(req, t) if err != nil { return nil, resp, err } return t, resp, nil return do[*DeployToken](s.client, withMethod(http.MethodPost), withPath("projects/%s/deploy_tokens", ProjectID{pid}), withAPIOpts(opt), withRequestOpts(options...), ) } func (s *DeployTokensService) DeleteProjectDeployToken(pid any, deployToken int64, options ...RequestOptionFunc) (*Response, error) { project, err := parseID(pid) if err != nil { return nil, err } u := fmt.Sprintf("projects/%s/deploy_tokens/%d", PathEscape(project), deployToken) req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) if err != nil { return nil, err } return s.client.Do(req, nil) _, resp, err := do[none](s.client, withMethod(http.MethodDelete), withPath("projects/%s/deploy_tokens/%d", ProjectID{pid}, deployToken), withRequestOpts(options...), ) return resp, err } // ListGroupDeployTokensOptions represents the available ListGroupDeployTokens() Loading @@ -236,45 +182,18 @@ type ListGroupDeployTokensOptions struct { } func (s *DeployTokensService) ListGroupDeployTokens(gid any, opt *ListGroupDeployTokensOptions, options ...RequestOptionFunc) ([]*DeployToken, *Response, error) { group, err := parseID(gid) if err != nil { return nil, nil, err } u := fmt.Sprintf("groups/%s/deploy_tokens", PathEscape(group)) req, err := s.client.NewRequest(http.MethodGet, u, opt, options) if err != nil { return nil, nil, err } var ts []*DeployToken resp, err := s.client.Do(req, &ts) if err != nil { return nil, resp, err } return ts, resp, nil return do[[]*DeployToken](s.client, withPath("groups/%s/deploy_tokens", GroupID{gid}), withAPIOpts(opt), withRequestOpts(options...), ) } func (s *DeployTokensService) GetGroupDeployToken(gid any, deployToken int64, options ...RequestOptionFunc) (*DeployToken, *Response, error) { group, err := parseID(gid) if err != nil { return nil, nil, err } u := fmt.Sprintf("groups/%s/deploy_tokens/%d", PathEscape(group), deployToken) req, err := s.client.NewRequest(http.MethodGet, u, nil, options) if err != nil { return nil, nil, err } t := new(DeployToken) resp, err := s.client.Do(req, t) if err != nil { return nil, resp, err } return t, resp, nil return do[*DeployToken](s.client, withPath("groups/%s/deploy_tokens/%d", GroupID{gid}, deployToken), withRequestOpts(options...), ) } // CreateGroupDeployTokenOptions represents the available CreateGroupDeployToken() options. Loading @@ -289,37 +208,19 @@ type CreateGroupDeployTokenOptions struct { } func (s *DeployTokensService) CreateGroupDeployToken(gid any, opt *CreateGroupDeployTokenOptions, options ...RequestOptionFunc) (*DeployToken, *Response, error) { group, err := parseID(gid) if err != nil { return nil, nil, err } u := fmt.Sprintf("groups/%s/deploy_tokens", PathEscape(group)) req, err := s.client.NewRequest(http.MethodPost, u, opt, options) if err != nil { return nil, nil, err } t := new(DeployToken) resp, err := s.client.Do(req, t) if err != nil { return nil, resp, err } return t, resp, nil return do[*DeployToken](s.client, withMethod(http.MethodPost), withPath("groups/%s/deploy_tokens", GroupID{gid}), withAPIOpts(opt), withRequestOpts(options...), ) } func (s *DeployTokensService) DeleteGroupDeployToken(gid any, deployToken int64, options ...RequestOptionFunc) (*Response, error) { group, err := parseID(gid) if err != nil { return nil, err } u := fmt.Sprintf("groups/%s/deploy_tokens/%d", PathEscape(group), deployToken) req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) if err != nil { return nil, err } return s.client.Do(req, nil) _, resp, err := do[none](s.client, withMethod(http.MethodDelete), withPath("groups/%s/deploy_tokens/%d", GroupID{gid}, deployToken), withRequestOpts(options...), ) return resp, err }