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

     1  package versionserver
     2  
     3  import (
     4  	"encoding/json"
     5  	"net/http"
     6  	"strconv"
     7  
     8  	"code.cloudfoundry.org/lager"
     9  
    10  	"github.com/pf-qiu/concourse/v6/atc/db"
    11  )
    12  
    13  // IMPORTANT: This is not yet tested because it is not being used
    14  func (s *Server) GetCausality(pipeline db.Pipeline) http.Handler {
    15  	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    16  		versionID, err := strconv.Atoi(r.FormValue(":resource_version_id"))
    17  		if err != nil {
    18  			w.WriteHeader(http.StatusBadRequest)
    19  			return
    20  		}
    21  
    22  		hLog := s.logger.Session("causality", lager.Data{
    23  			"version": versionID,
    24  		})
    25  
    26  		causality, err := pipeline.Causality(versionID)
    27  		if err != nil {
    28  			hLog.Error("failed-to-fetch", err)
    29  			w.WriteHeader(http.StatusInternalServerError)
    30  			return
    31  		}
    32  
    33  		hLog.Debug("fetched", lager.Data{"length": len(causality)})
    34  
    35  		w.Header().Set("Content-Type", "application/json")
    36  
    37  		w.WriteHeader(http.StatusOK)
    38  
    39  		_ = json.NewEncoder(w).Encode(causality)
    40  	})
    41  }