func platformUpdate(w http.ResponseWriter, r *http.Request, t auth.Token) error { defer r.Body.Close() name := r.URL.Query().Get(":name") file, _, _ := r.FormFile("dockerfile_content") if file != nil { defer file.Close() } args := make(map[string]string) for key, values := range r.Form { args[key] = values[0] } canUpdatePlatform := permission.Check(t, permission.PermPlatformUpdate) if !canUpdatePlatform { return permission.ErrUnauthorized } w.Header().Set("Content-Type", "text") keepAliveWriter := io.NewKeepAliveWriter(w, 30*time.Second, "") defer keepAliveWriter.Stop() writer := &io.SimpleJsonMessageEncoderWriter{Encoder: json.NewEncoder(keepAliveWriter)} err := app.PlatformUpdate(provision.PlatformOptions{ Name: name, Args: args, Input: file, Output: writer, }) if err != nil { writer.Encode(io.SimpleJsonMessage{Error: err.Error()}) writer.Write([]byte("Failed to update platform!\n")) return nil } writer.Write([]byte("Platform successfully updated!\n")) return nil }
func platformUpdate(w http.ResponseWriter, r *http.Request, t auth.Token) error { name := r.URL.Query().Get(":name") err := r.ParseForm() if err != nil { return err } args := make(map[string]string) for key, values := range r.Form { args[key] = values[0] } w.Header().Set("Content-Type", "text") return app.PlatformUpdate(name, args, w) }
// title: update platform // path: /platforms/{name} // method: PUT // produce: application/x-json-stream // responses: // 200: Platform updated // 401: Unauthorized // 404: Not found func platformUpdate(w http.ResponseWriter, r *http.Request, t auth.Token) (err error) { r.ParseForm() name := r.URL.Query().Get(":name") file, _, _ := r.FormFile("dockerfile_content") if file != nil { defer file.Close() } args := make(map[string]string) for key, values := range r.Form { args[key] = values[0] } canUpdatePlatform := permission.Check(t, permission.PermPlatformUpdate) if !canUpdatePlatform { return permission.ErrUnauthorized } w.Header().Set("Content-Type", "application/x-json-stream") keepAliveWriter := io.NewKeepAliveWriter(w, 30*time.Second, "") defer keepAliveWriter.Stop() writer := &io.SimpleJsonMessageEncoderWriter{Encoder: json.NewEncoder(keepAliveWriter)} evt, err := event.New(&event.Opts{ Target: event.Target{Type: event.TargetTypePlatform, Value: name}, Kind: permission.PermPlatformUpdate, Owner: t, CustomData: event.FormToCustomData(r.Form), Allowed: event.Allowed(permission.PermPlatformReadEvents), }) if err != nil { return err } defer func() { evt.Done(err) }() err = app.PlatformUpdate(provision.PlatformOptions{ Name: name, Args: args, Input: file, Output: writer, }) if err == app.ErrPlatformNotFound { return &errors.HTTP{Code: http.StatusNotFound, Message: err.Error()} } if err != nil { return err } writer.Write([]byte("Platform successfully updated!\n")) return nil }
func platformUpdate(w http.ResponseWriter, r *http.Request, t auth.Token) error { name := r.URL.Query().Get(":name") err := r.ParseForm() if err != nil { return err } args := make(map[string]string) for key, values := range r.Form { args[key] = values[0] } w.Header().Set("Content-Type", "text") writer := io.NewKeepAliveWriter(w, 30*time.Second, "please wait...") err = app.PlatformUpdate(name, args, writer) if err != nil { return err } fmt.Fprintln(w, "\nOK!") return nil }
func platformUpdate(w http.ResponseWriter, r *http.Request, t auth.Token) error { name := r.URL.Query().Get(":name") err := r.ParseForm() if err != nil { return err } args := make(map[string]string) for key, values := range r.Form { args[key] = values[0] } w.Header().Set("Content-Type", "text") keepAliveWriter := io.NewKeepAliveWriter(w, 30*time.Second, "") defer keepAliveWriter.Stop() writer := &io.SimpleJsonMessageEncoderWriter{Encoder: json.NewEncoder(keepAliveWriter)} err = app.PlatformUpdate(name, args, writer) if err != nil { writer.Encode(io.SimpleJsonMessage{Error: err.Error()}) writer.Write([]byte("Failed to update platform!\n")) return nil } writer.Write([]byte("Platform successfully updated!\n")) return nil }