示例#1
0
文件: menu.go 项目: ninnemana/API
func SaveMenu(rw http.ResponseWriter, req *http.Request, enc encoding.Encoder, params martini.Params, dtx *apicontext.DataContext) string {
	var m site.Menu
	var err error
	idStr := params["id"]
	if idStr != "" {
		m.Id, err = strconv.Atoi(idStr)
		err = m.Get(dtx)
		if err != nil {
			apierror.GenerateError("Trouble getting site menu ID", err, rw, req)
		}
	}

	//json
	requestBody, err := ioutil.ReadAll(req.Body)
	if err != nil {
		apierror.GenerateError("Trouble reading request body for saving site menu", err, rw, req)
	}
	err = json.Unmarshal(requestBody, &m)
	if err != nil {
		apierror.GenerateError("Trouble unmarshalling request body for saving site menu", err, rw, req)
	}
	//create or update
	if m.Id > 0 {
		err = m.Update()
	} else {
		err = m.Create()
	}

	if err != nil {
		apierror.GenerateError("Trouble saving site menu", err, rw, req)
	}
	return encoding.Must(enc.Encode(m))
}
示例#2
0
文件: menu.go 项目: ninnemana/API
func GetMenuWithContents(rw http.ResponseWriter, req *http.Request, enc encoding.Encoder, params martini.Params, dtx *apicontext.DataContext) string {
	var m site.Menu
	var err error
	idStr := params["id"]
	id, err := strconv.Atoi(idStr)

	if err == nil {
		//Thar be an Id int
		m.Id = id
		err = m.Get(dtx)

	} else {
		//Thar be a name
		m.Name = idStr
		err = m.GetByName(dtx)
	}

	if err != nil {
		apierror.GenerateError("Trouble getting site menu", err, rw, req)
		return ""
	}

	err = m.GetContents()
	if err != nil {
		apierror.GenerateError("Trouble getting site menu with contents", err, rw, req)
		return ""
	}

	return encoding.Must(enc.Encode(m))
}