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

     1  package resourceserver
     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/api/present"
     9  	"github.com/pf-qiu/concourse/v6/atc/db"
    10  )
    11  
    12  func (s *Server) ListResources(pipeline db.Pipeline) http.Handler {
    13  	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    14  		logger := s.logger.Session("list-resources")
    15  
    16  		resources, err := pipeline.Resources()
    17  		if err != nil {
    18  			logger.Error("failed-to-get-dashboard-resources", err)
    19  			w.WriteHeader(http.StatusInternalServerError)
    20  			return
    21  		}
    22  
    23  		presentedResources := []atc.Resource{}
    24  		for _, resource := range resources {
    25  			presentedResources = append(
    26  				presentedResources,
    27  				present.Resource(resource),
    28  			)
    29  		}
    30  
    31  		w.Header().Set("Content-Type", "application/json")
    32  		w.WriteHeader(http.StatusOK)
    33  		err = json.NewEncoder(w).Encode(presentedResources)
    34  		if err != nil {
    35  			logger.Error("failed-to-encode-resources", err)
    36  			w.WriteHeader(http.StatusInternalServerError)
    37  		}
    38  	})
    39  }