github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/requester/publicapi/endpoints_results.go (about) 1 package publicapi 2 3 import ( 4 "encoding/json" 5 "net/http" 6 7 "github.com/filecoin-project/bacalhau/pkg/jobstore" 8 "github.com/filecoin-project/bacalhau/pkg/model" 9 "github.com/filecoin-project/bacalhau/pkg/publicapi/handlerwrapper" 10 "github.com/filecoin-project/bacalhau/pkg/system" 11 oteltrace "go.opentelemetry.io/otel/trace" 12 ) 13 14 type resultsRequest struct { 15 ClientID string `json:"client_id" example:"ac13188e93c97a9c2e7cf8e86c7313156a73436036f30da1ececc2ce79f9ea51"` 16 JobID string `json:"job_id" example:"9304c616-291f-41ad-b862-54e133c0149e"` 17 } 18 19 type resultsResponse struct { 20 Results []model.PublishedResult `json:"results"` 21 } 22 23 // results godoc 24 // 25 // @ID pkg/requester/publicapi/results 26 // @Summary Returns the results of the job-id specified in the body payload. 27 // @Description.markdown endpoints_results 28 // @Tags Job 29 // @Accept json 30 // @Produce json 31 // @Param stateRequest body stateRequest true " " 32 // @Success 200 {object} resultsResponse 33 // @Failure 400 {object} string 34 // @Failure 500 {object} string 35 // @Router /requester/results [post] 36 func (s *RequesterAPIServer) results(res http.ResponseWriter, req *http.Request) { 37 ctx := req.Context() 38 var stateReq stateRequest 39 if err := json.NewDecoder(req.Body).Decode(&stateReq); err != nil { 40 http.Error(res, err.Error(), http.StatusBadRequest) 41 return 42 } 43 res.Header().Set(handlerwrapper.HTTPHeaderClientID, stateReq.ClientID) 44 res.Header().Set(handlerwrapper.HTTPHeaderJobID, stateReq.JobID) 45 46 ctx = system.AddJobIDToBaggage(ctx, stateReq.JobID) 47 system.AddJobIDFromBaggageToSpan(ctx, oteltrace.SpanFromContext(ctx)) 48 49 stateResolver := jobstore.GetStateResolver(s.jobStore) 50 results, err := stateResolver.GetResults(ctx, stateReq.JobID) 51 if err != nil { 52 http.Error(res, err.Error(), http.StatusInternalServerError) 53 return 54 } 55 56 res.WriteHeader(http.StatusOK) 57 err = json.NewEncoder(res).Encode(resultsResponse{ 58 Results: results, 59 }) 60 if err != nil { 61 http.Error(res, err.Error(), http.StatusInternalServerError) 62 return 63 } 64 }