in sharedlibraries/rest/rest.go [92:130]
func (r *Rest) GetResponse(ctx context.Context, method string, baseURL string, data []byte) ([]byte, error) {
log.CtxLogger(ctx).Debugw("GetResponse", "method", method, "baseURL", baseURL, "data", string(data))
req, err := http.NewRequest(method, baseURL, bytes.NewBuffer(data))
if err != nil {
return nil, fmt.Errorf("failed to create request, err: %w", err)
}
token, err := token(ctx, r.TokenGetter)
if err != nil {
return nil, fmt.Errorf("failed to get token, err: %w", err)
}
req.Header.Add("Authorization", "Bearer "+token.AccessToken)
req.Header.Add("Content-Type", "application/json")
token.SetAuthHeader(req)
resp, err := r.HTTPClient.Do(req)
defer googleapi.CloseBody(resp)
if err != nil {
return nil, err
}
bodyBytes, err := io.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("failed to read response body, err: %w", err)
}
if resp.StatusCode != http.StatusOK {
var googleapiErr errorResponse
if err = json.Unmarshal([]byte(bodyBytes), &googleapiErr); err != nil {
return nil, fmt.Errorf("failed to unmarshal googleapi error, err: %w", err)
}
log.CtxLogger(ctx).Errorw("getresponse error", "error", googleapiErr)
if googleapiErr.Err.Code != http.StatusOK {
return nil, fmt.Errorf("%s", googleapiErr.Err.Message)
}
}
return bodyBytes, nil
}