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

     1  package jobserver
     2  
     3  import (
     4  	"encoding/json"
     5  	"net/http"
     6  
     7  	"github.com/pf-qiu/concourse/v6/atc/api/present"
     8  	"github.com/pf-qiu/concourse/v6/atc/db"
     9  )
    10  
    11  func (s *Server) GetJob(pipeline db.Pipeline) http.Handler {
    12  	logger := s.logger.Session("get-job")
    13  	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    14  		jobName := r.FormValue(":job_name")
    15  
    16  		job, found, err := pipeline.Job(jobName)
    17  		if err != nil {
    18  			logger.Error("could-not-get-job-finished", err)
    19  			w.WriteHeader(http.StatusInternalServerError)
    20  			return
    21  		}
    22  
    23  		if !found {
    24  			w.WriteHeader(http.StatusNotFound)
    25  			return
    26  		}
    27  
    28  		inputs, err := job.Inputs()
    29  		if err != nil {
    30  			logger.Error("could-not-get-job-inputs", err)
    31  			w.WriteHeader(http.StatusInternalServerError)
    32  			return
    33  		}
    34  
    35  		outputs, err := job.Outputs()
    36  		if err != nil {
    37  			logger.Error("could-not-get-job-inputs", err)
    38  			w.WriteHeader(http.StatusInternalServerError)
    39  			return
    40  		}
    41  
    42  		finished, next, err := job.FinishedAndNextBuild()
    43  		if err != nil {
    44  			logger.Error("could-not-get-job-finished-and-next-build", err)
    45  			w.WriteHeader(http.StatusInternalServerError)
    46  			return
    47  		}
    48  
    49  		teamName := r.FormValue(":team_name")
    50  
    51  		w.Header().Set("Content-Type", "application/json")
    52  		w.WriteHeader(http.StatusOK)
    53  
    54  		err = json.NewEncoder(w).Encode(present.Job(
    55  			teamName,
    56  			job,
    57  			inputs,
    58  			outputs,
    59  			finished,
    60  			next,
    61  			nil,
    62  		))
    63  		if err != nil {
    64  			logger.Error("failed-to-encode-job", err)
    65  			w.WriteHeader(http.StatusInternalServerError)
    66  		}
    67  	})
    68  }