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

     1  package buildserver
     2  
     3  import (
     4  	"encoding/json"
     5  	"net/http"
     6  
     7  	"github.com/pf-qiu/concourse/v6/atc"
     8  	"github.com/pf-qiu/concourse/v6/atc/db"
     9  )
    10  
    11  func (s *Server) GetBuildPlan(build db.Build) http.Handler {
    12  	hLog := s.logger.Session("get-build-plan")
    13  
    14  	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    15  		if !build.HasPlan() {
    16  			w.WriteHeader(http.StatusNotFound)
    17  			return
    18  		}
    19  		w.Header().Set("Content-Type", "application/json")
    20  		err := json.NewEncoder(w).Encode(atc.PublicBuildPlan{
    21  			Schema: build.Schema(),
    22  			Plan:   build.PublicPlan(),
    23  		})
    24  		if err != nil {
    25  			hLog.Error("failed-to-encode-public-build-plan", err)
    26  			w.WriteHeader(http.StatusInternalServerError)
    27  			return
    28  		}
    29  	})
    30  }