Commit d72a2e3d authored by Timo Furrer's avatar Timo Furrer 🏙️
Browse files

Merge branch 'request-builder' into 'main'

refactor: use do function for requests

See merge request !2674
parents d5e76a7b a3429ad2
Loading
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
package gitlab

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
@@ -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
}
+12 −4
Original line number Diff line number Diff line
package gitlab

import (
	"bytes"
	"encoding/json"
	"io"
	"net/http"
@@ -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()
	}
}
+7 −16
Original line number Diff line number Diff line
@@ -14,10 +14,7 @@

package gitlab

import (
	"fmt"
	"net/http"
)
import "net/http"

type (
	DependencyProxyServiceInterface interface {
@@ -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
}
+46 −145
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package gitlab

import (
	"fmt"
	"net/http"
	"time"
)
@@ -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()
@@ -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.
@@ -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()
@@ -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.
@@ -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
}
+144 −614

File changed.

Preview size limit exceeded, changes collapsed.

Loading