func SaveCustomer(rw http.ResponseWriter, r *http.Request, enc encoding.Encoder, params martini.Params, dtx *apicontext.DataContext) string { var c customer.Customer var err error if r.FormValue("id") != "" || params["id"] != "" { id := r.FormValue("id") if id == "" { id = params["id"] } if c.Id, err = strconv.Atoi(id); err != nil { apierror.GenerateError("Trouble getting customer ID", err, rw, r) return "" } if err = c.Basics(dtx.APIKey); err != nil { apierror.GenerateError("Trouble getting customer", err, rw, r) return "" } } //json var requestBody []byte if requestBody, err = ioutil.ReadAll(r.Body); err != nil { apierror.GenerateError("Trouble reading request body while saving customer", err, rw, r) return "" } if err = json.Unmarshal(requestBody, &c); err != nil { apierror.GenerateError("Trouble unmarshalling json request body while saving customer", err, rw, r) return "" } //create or update if c.Id > 0 { err = c.Update() } else { err = c.Create() } if err != nil { msg := "Trouble creating customer" if c.Id > 0 { msg = "Trouble updating customer" } apierror.GenerateError(msg, err, rw, r) return "" } return encoding.Must(enc.Encode(c)) }