in sobject/dml.go [252:290]
func (d *dml) upsertResponse(request *http.Request) (UpsertValue, error) {
response, err := d.session.Client().Do(request)
if err != nil {
return UpsertValue{}, err
}
decoder := json.NewDecoder(response.Body)
var isInsert bool
var value UpsertValue
switch response.StatusCode {
case http.StatusCreated:
defer response.Body.Close()
isInsert = true
err = decoder.Decode(&value)
if err != nil {
return UpsertValue{}, err
}
case http.StatusNoContent:
isInsert = false
default:
defer response.Body.Close()
var upsetErrs []sfdc.Error
err = decoder.Decode(&upsetErrs)
errMsg := fmt.Errorf("upsert response err: %d %s", response.StatusCode, response.Status)
if err == nil {
for _, updateErr := range upsetErrs {
errMsg = fmt.Errorf("upsert response err: %s: %s", updateErr.ErrorCode, updateErr.Message)
}
}
return UpsertValue{}, errMsg
}
value.Inserted = isInsert
return value, nil
}