MCPcopy
hub / github.com/semaphoreui/semaphore / GetTaskRawOutput

Function GetTaskRawOutput

api/projects/tasks.go:258–298  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

256}
257
258func GetTaskRawOutput(w http.ResponseWriter, r *http.Request) {
259 task := helpers.GetFromContext(r, "task").(db.Task)
260 project := helpers.GetFromContext(r, "project").(db.Project)
261
262 const chunkSize = 10000
263 offset := 0
264
265 eof := false
266 for !eof {
267 var output []db.TaskOutput
268 output, err := helpers.Store(r).GetTaskOutputs(project.ID, task.ID, db.RetrieveQueryParams{Offset: offset, Count: chunkSize})
269
270 if err != nil {
271 if offset == 0 {
272 util.LogErrorF(err, log.Fields{"error": "Bad request. Cannot get task output from database"})
273 w.WriteHeader(http.StatusBadRequest)
274 return
275 }
276
277 util.LogErrorF(err, log.Fields{"error": "Cannot get task output from database"})
278 return
279 }
280
281 if offset == 0 {
282 w.Header().Set("content-type", "text/plain; charset=utf-8")
283 w.WriteHeader(http.StatusOK)
284 }
285
286 readSize := len(output)
287
288 if readSize > 0 {
289 offset += readSize
290 data := outputToBytes(output)
291 if _, err := w.Write(data); err != nil {
292 return
293 }
294 }
295
296 eof = readSize < chunkSize
297 }
298}
299
300func ConfirmTask(w http.ResponseWriter, r *http.Request) {
301 targetTask := helpers.GetFromContext(r, "task").(db.Task)

Callers

nothing calls this directly

Calls 6

GetFromContextFunction · 0.92
StoreFunction · 0.92
LogErrorFFunction · 0.92
outputToBytesFunction · 0.85
WriteMethod · 0.80
GetTaskOutputsMethod · 0.65

Tested by

no test coverage detected