// ServeHTTP is the http.Handler interface implementation
func (c *DeleteAppHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	name, ok := mux.Vars(r)[appNamePath]
	if !ok {
		http.Error(w, jsonErrStr("app name not found in the path"), http.StatusBadRequest)
		return
	}
	if err := c.db.Delete(models.NewAppKey(name)); err != nil {
		http.Error(w, jsonErr(err, "DB error when trying to delete"), http.StatusInternalServerError)
		return
	}
	w.WriteHeader(http.StatusNoContent)
}
// ServeHTTP is the http.Handler interface implementation
func (c *CreateAppHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	a := &models.App{}
	if err := json.NewDecoder(r.Body).Decode(a); err != nil {
		http.Error(w, jsonErr(err, "couldn't decode JSON body"), http.StatusBadRequest)
		return
	}
	key := models.NewAppKey(a.Name)
	if err := c.db.Save(key, a); err != nil {
		http.Error(w, jsonErr(err, "couldn't save to the database"), http.StatusInternalServerError)
		return
	}
	w.WriteHeader(http.StatusCreated)
	w.Write([]byte(jsonKVP("status", "created")))
}
Example #3
0
// ServeHTTP is the http.Handler interface implementation
func (c *GetAppHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	name, ok := mux.Vars(r)[appNamePath]
	if !ok {
		http.Error(w, jsonErrStr("missing app name in path"), http.StatusBadRequest)
		return
	}
	app := &models.App{}
	err := c.db.Get(models.NewAppKey(name), app)
	if err == db.ErrNotFound {
		http.Error(w, jsonErrStr(fmt.Sprintf("app %s not found", name)), http.StatusNotFound)
		return
	} else if err != nil {
		http.Error(w, jsonErrStr(fmt.Sprintf("database error: %s", err)), http.StatusInternalServerError)
		return
	}
	if err := json.NewEncoder(w).Encode(app); err != nil {
		http.Error(w, jsonErr(err, "encoding json"), http.StatusInternalServerError)
		return
	}
}