func()

in internal/gitlabnet/git/client.go [83:113]


func (c *Client) do(request *http.Request) (*http.Response, error) {
	for k, v := range c.Headers {
		request.Header.Add(k, v)
	}

	response, err := httpClient.Do(request)
	if err != nil {
		return nil, &client.APIError{Msg: repoUnavailableErrMsg}
	}

	if response.StatusCode >= 400 {
		defer func() {
			if err := response.Body.Close(); err != nil {
				log.WithError(err).Error("Unable to close response body")
			}
		}()

		body, err := io.ReadAll(response.Body)
		if err != nil {
			return nil, &client.APIError{Msg: repoUnavailableErrMsg}
		}

		if len(body) > 0 {
			return nil, &client.APIError{Msg: string(body)}
		}

		return nil, &client.APIError{Msg: repoUnavailableErrMsg}
	}

	return response, nil
}