in internal/aws/client.go [91:129]
func (c *client) sendRequestWithBody(method string, url string, body interface{}) (response []byte, err error) {
// Convert the body to JSON
d, err := json.Marshal(body)
if err != nil {
return
}
// Create a request with our body of JSON
r, err := http.NewRequest(method, url, bytes.NewBuffer(d))
if err != nil {
return
}
log.WithFields(log.Fields{"url": url, "method": method})
// Set the content-type and authorization headers
r.Header.Set("Content-Type", "application/scim+json")
r.Header.Set("Authorization", fmt.Sprintf("Bearer %s", c.bearerToken))
// Call the URL
resp, err := c.httpClient.Do(r)
if err != nil {
return
}
defer resp.Body.Close()
// Read the body back from the response
response, err = ioutil.ReadAll(resp.Body)
if err != nil {
return
}
// If we get a non-2xx status code, raise that via an error
if resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusNoContent {
err = fmt.Errorf("status of http response was %d", resp.StatusCode)
}
return
}