Esempio n. 1
0
func ApplicationUpload(cocs backend.Cocaine, w http.ResponseWriter, r *http.Request) {
	name := mux.Vars(r)["name"]
	version := mux.Vars(r)["version"]

	defer r.Body.Close()
	path, err := archive.Unpack(r.Body)
	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	defer os.RemoveAll(path)

	info := backend.AppUplodaInfo{
		Path:    path,
		App:     name,
		Version: version,
	}

	ch, _, err := cocs.ApplicationUpload(info)
	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}

	for lg := range ch {
		w.Write([]byte(lg))
		w.(http.Flusher).Flush()
	}
}