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

     1  package resourceserver
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"code.cloudfoundry.org/lager"
     7  	"github.com/pf-qiu/concourse/v6/atc/db"
     8  )
     9  
    10  func (s *Server) UnpinResource(pipeline db.Pipeline) http.Handler {
    11  	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    12  		resourceName := r.FormValue(":resource_name")
    13  
    14  		logger := s.logger.Session("unpin-resource-version", lager.Data{
    15  			"resource": resourceName,
    16  		})
    17  
    18  		resource, found, err := pipeline.Resource(resourceName)
    19  		if err != nil {
    20  			logger.Error("failed-to-get-resource", err)
    21  			w.WriteHeader(http.StatusInternalServerError)
    22  			return
    23  		}
    24  		if !found {
    25  			logger.Info("resource-not-found")
    26  			w.WriteHeader(http.StatusNotFound)
    27  			return
    28  		}
    29  
    30  		err = resource.UnpinVersion()
    31  		if err != nil {
    32  			logger.Error("failed-to-unpin-resource-version", err)
    33  			w.WriteHeader(http.StatusInternalServerError)
    34  			return
    35  		}
    36  
    37  		w.WriteHeader(http.StatusOK)
    38  	})
    39  }