github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/pipelineserver/rename.go (about)

     1  package pipelineserver
     2  
     3  import (
     4  	"encoding/json"
     5  	"io/ioutil"
     6  	"net/http"
     7  
     8  	"github.com/pf-qiu/concourse/v6/atc"
     9  	"github.com/pf-qiu/concourse/v6/atc/db"
    10  )
    11  
    12  func (s *Server) RenamePipeline(pipeline db.Pipeline) http.Handler {
    13  	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    14  		logger := s.logger.Session("rename-pipeline")
    15  
    16  		data, err := ioutil.ReadAll(r.Body)
    17  		if err != nil {
    18  			logger.Error("failed-to-read-body", err)
    19  			w.WriteHeader(http.StatusInternalServerError)
    20  			return
    21  		}
    22  
    23  		var rename atc.RenameRequest
    24  		err = json.Unmarshal(data, &rename)
    25  		if err != nil {
    26  			logger.Error("failed-to-unmarshal-body", err)
    27  			w.WriteHeader(http.StatusInternalServerError)
    28  			return
    29  		}
    30  
    31  		var warnings []atc.ConfigWarning
    32  		warning := atc.ValidateIdentifier(rename.NewName, "pipeline")
    33  		if warning != nil {
    34  			warnings = append(warnings, *warning)
    35  		}
    36  
    37  		err = pipeline.Rename(rename.NewName)
    38  		if err != nil {
    39  			logger.Error("failed-to-update-name", err)
    40  			w.WriteHeader(http.StatusInternalServerError)
    41  			return
    42  		}
    43  
    44  		w.Header().Set("Content-Type", "application/json")
    45  		err = json.NewEncoder(w).Encode(atc.SaveConfigResponse{Warnings: warnings})
    46  		if err != nil {
    47  			s.logger.Error("failed-to-encode-response", err)
    48  			w.WriteHeader(http.StatusInternalServerError)
    49  		}
    50  	})
    51  }