(w http.ResponseWriter, r *http.Request)
| 256 | } |
| 257 | |
| 258 | func 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 | |
| 300 | func ConfirmTask(w http.ResponseWriter, r *http.Request) { |
| 301 | targetTask := helpers.GetFromContext(r, "task").(db.Task) |
nothing calls this directly
no test coverage detected