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
}