in composite/batch/batch.go [64:120]
func (r *Resource) Retrieve(haltOnError bool, requesters []Subrequester) (Value, error) {
if requesters == nil {
return Value{}, errors.New("composite subrequests: requesters can not nil")
}
err := r.validateSubrequests(requesters)
if err != nil {
return Value{}, err
}
body, err := r.payload(haltOnError, requesters)
if err != nil {
return Value{}, err
}
url := r.session.ServiceURL() + endpoint
request, err := http.NewRequest(http.MethodPost, url, body)
if err != nil {
return Value{}, err
}
request.Header.Add("Accept", "application/json")
request.Header.Add("Content-Type", "application/json")
r.session.AuthorizationHeader(request)
response, err := r.session.Client().Do(request)
if err != nil {
return Value{}, err
}
decoder := json.NewDecoder(response.Body)
defer response.Body.Close()
if response.StatusCode != http.StatusOK {
var insertErrs []sfdc.Error
err = decoder.Decode(&insertErrs)
var errMsg error
if err == nil {
for _, insertErr := range insertErrs {
errMsg = fmt.Errorf("insert response err: %s: %s", insertErr.ErrorCode, insertErr.Message)
}
} else {
errMsg = fmt.Errorf("insert response err: %d %s", response.StatusCode, response.Status)
}
return Value{}, errMsg
}
var value Value
err = decoder.Decode(&value)
if err != nil {
return Value{}, err
}
return value, nil
}