func()

in sharedlibraries/gce/wlm/wlm.go [114:166]


func (d *DataWarehouseService) WriteInsight(project, location string, req *dwpb.WriteInsightRequest) (*WriteInsightResponse, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+runtime.Version())
	reqHeaders.Set("User-Agent", googleapi.UserAgent)
	b, err := protojson.Marshal(req)
	if err != nil {
		return nil, err
	}
	log.Logger.Debugw("Body bytes", "bytes", b, "byteStr", string(b))
	body := bytes.NewReader(b)
	reqHeaders.Set("Content-Type", "application/json")
	url := googleapi.ResolveRelative(d.BasePath, "v1/projects/{+project}/locations/{+location}/insights:writeInsight")
	url += "?alt=json&prettyPrint=false"
	httpReq, err := http.NewRequest("POST", url, body)
	if err != nil {
		return nil, err
	}
	httpReq.Header = reqHeaders
	googleapi.Expand(httpReq.URL, map[string]string{
		"project":  project,
		"location": location,
	})
	buf := new(bytes.Buffer)
	bCopy, _ := httpReq.GetBody()
	buf.ReadFrom(bCopy)
	bodyBytes := buf.String()
	bodyStr := string(bodyBytes)
	log.Logger.Debugw("Sending request", "url", httpReq.URL, "body", bodyStr)
	httpRes, err := d.c.Do(httpReq)
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(httpRes)
	if httpRes != nil && httpRes.StatusCode == http.StatusNotModified {
		return nil, &googleapi.Error{
			Code:   httpRes.StatusCode,
			Header: httpRes.Header,
		}
	}
	if err := googleapi.CheckResponse(httpRes); err != nil {
		return nil, err
	}
	target := &WriteInsightResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         httpRes.Header,
			HTTPStatusCode: httpRes.StatusCode,
		},
	}
	if err := json.NewDecoder(httpRes.Body).Decode(target); err != nil {
		return nil, err
	}
	return target, nil
}