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 }