github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/resourceserver/list_all.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/accessor"
     9  	"github.com/pf-qiu/concourse/v6/atc/api/present"
    10  	"github.com/pf-qiu/concourse/v6/atc/db"
    11  )
    12  
    13  func (s *Server) ListAllResources(w http.ResponseWriter, r *http.Request) {
    14  	logger := s.logger.Session("list-all-resources")
    15  
    16  	acc := accessor.GetAccessor(r)
    17  
    18  	var (
    19  		dbResources []db.Resource
    20  		err         error
    21  	)
    22  	if acc.IsAdmin() {
    23  		dbResources, err = s.resourceFactory.AllResources()
    24  	} else {
    25  		dbResources, err = s.resourceFactory.VisibleResources(acc.TeamNames())
    26  	}
    27  	if err != nil {
    28  		logger.Error("failed-to-get-all-visible-resources", err)
    29  		w.WriteHeader(http.StatusInternalServerError)
    30  		return
    31  	}
    32  
    33  	resources := []atc.Resource{}
    34  
    35  	for _, resource := range dbResources {
    36  		resources = append(
    37  			resources,
    38  			present.Resource(resource),
    39  		)
    40  	}
    41  
    42  	w.Header().Set("Content-Type", "application/json")
    43  	err = json.NewEncoder(w).Encode(resources)
    44  	if err != nil {
    45  		logger.Error("failed-to-encode-resources", err)
    46  		w.WriteHeader(http.StatusInternalServerError)
    47  	}
    48  }