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

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