package gitlab import ( "bytes" "context" "fmt" "io" "io/ioutil" "net/http" "github.com/xlgmokha/x/pkg/env" "github.com/xlgmokha/x/pkg/x" ) type GitLab struct { ctx context.Context client http.Client token string url string } func New(ctx context.Context, token string) *GitLab { return &GitLab{ ctx: ctx, client: http.Client{}, token: token, url: "https://gitlab.com/api/v4", } } func (gl *GitLab) Group(id int) *Group { return NewGroup(gl, id) } func (gl *GitLab) Get(url string) *http.Response { return gl.execute(gl.newRequest("GET", url)) } func (gl *GitLab) newRequest(method string, url string) *http.Request { request := x.Must(http.NewRequestWithContext(gl.ctx, "GET", url, nil)) request.Header.Add("Authorization", fmt.Sprintf("Bearer %v", gl.token)) return request } func (gl *GitLab) execute(request *http.Request) *http.Response { response := x.Must(gl.client.Do(request)) if env.Fetch("DUMP", "") != "" { body := x.Must(io.ReadAll(response.Body)) fmt.Println(string(body)) response.Body = ioutil.NopCloser(bytes.NewBuffer(body)) } return response }