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

     1  package resourceserver
     2  
     3  import (
     4  	"encoding/json"
     5  	"net/http"
     6  
     7  	"code.cloudfoundry.org/lager"
     8  	"github.com/pf-qiu/concourse/v6/atc"
     9  	"github.com/pf-qiu/concourse/v6/atc/db"
    10  )
    11  
    12  func (s *Server) SetPinCommentOnResource(pipeline db.Pipeline) http.Handler {
    13  	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    14  		resourceName := r.FormValue(":resource_name")
    15  
    16  		logger := s.logger.Session("set-pin-comment-on-resource", lager.Data{
    17  			"resource": resourceName,
    18  		})
    19  
    20  		resource, found, err := pipeline.Resource(resourceName)
    21  		if err != nil {
    22  			logger.Error("failed-to-get-resource", err)
    23  			w.WriteHeader(http.StatusInternalServerError)
    24  			return
    25  		}
    26  		if !found {
    27  			logger.Info("resource-not-found")
    28  			w.WriteHeader(http.StatusNotFound)
    29  			return
    30  		}
    31  
    32  		var reqBody atc.SetPinCommentRequestBody
    33  		err = json.NewDecoder(r.Body).Decode(&reqBody)
    34  		if err != nil {
    35  			logger.Info("malformed-request", lager.Data{"error": err.Error()})
    36  			w.WriteHeader(http.StatusBadRequest)
    37  			return
    38  		}
    39  
    40  		err = resource.SetPinComment(reqBody.PinComment)
    41  		if err != nil {
    42  			logger.Error("failed-to-set-pin-comment-on-resource", err)
    43  			w.WriteHeader(http.StatusInternalServerError)
    44  			return
    45  		}
    46  
    47  		w.WriteHeader(http.StatusOK)
    48  	})
    49  }