Add Task details view

Allow users to find task by task ID
This commit is contained in:
Ken Hibino
2021-07-30 05:53:14 -07:00
committed by GitHub
parent d63e4a3229
commit 3befee382d
17 changed files with 750 additions and 99 deletions

View File

@@ -2,9 +2,11 @@ package main
import (
"encoding/json"
"errors"
"log"
"net/http"
"strconv"
"strings"
"time"
"github.com/gorilla/mux"
@@ -623,3 +625,33 @@ func getPageOptions(r *http.Request) (pageSize, pageNum int) {
}
return pageSize, pageNum
}
func newGetTaskHandlerFunc(inspector *asynq.Inspector) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
qname, taskid := vars["qname"], vars["task_id"]
if qname == "" {
http.Error(w, "queue name cannot be empty", http.StatusBadRequest)
return
}
if taskid == "" {
http.Error(w, "task_id cannot be empty", http.StatusBadRequest)
return
}
info, err := inspector.GetTaskInfo(qname, taskid)
switch {
case errors.Is(err, asynq.ErrQueueNotFound), errors.Is(err, asynq.ErrTaskNotFound):
http.Error(w, strings.TrimPrefix(err.Error(), "asynq: "), http.StatusNotFound)
return
case err != nil:
http.Error(w, strings.TrimPrefix(err.Error(), "asynq: "), http.StatusInternalServerError)
return
}
if err := json.NewEncoder(w).Encode(toTaskInfo(info)); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
}