func()

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
}