mirror of
				https://github.com/hibiken/asynqmon.git
				synced 2025-10-26 08:16:10 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"net/http"
 | |
| 
 | |
| 	"github.com/gorilla/mux"
 | |
| 	"github.com/hibiken/asynq/inspeq"
 | |
| )
 | |
| 
 | |
| // ****************************************************************************
 | |
| // This file defines:
 | |
| //   - http.Handler(s) for scheduler entry related endpoints
 | |
| // ****************************************************************************
 | |
| 
 | |
| func newListSchedulerEntriesHandlerFunc(inspector *inspeq.Inspector) http.HandlerFunc {
 | |
| 	return func(w http.ResponseWriter, r *http.Request) {
 | |
| 		entries, err := inspector.SchedulerEntries()
 | |
| 		if err != nil {
 | |
| 			http.Error(w, err.Error(), http.StatusInternalServerError)
 | |
| 			return
 | |
| 		}
 | |
| 		payload := make(map[string]interface{})
 | |
| 		if len(entries) == 0 {
 | |
| 			// avoid nil for the entries field in json output.
 | |
| 			payload["entries"] = make([]*SchedulerEntry, 0)
 | |
| 		} else {
 | |
| 			payload["entries"] = toSchedulerEntries(entries)
 | |
| 		}
 | |
| 		if err := json.NewEncoder(w).Encode(payload); err != nil {
 | |
| 			http.Error(w, err.Error(), http.StatusInternalServerError)
 | |
| 			return
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| type ListSchedulerEnqueueEventsResponse struct {
 | |
| 	Events []*SchedulerEnqueueEvent `json:"events"`
 | |
| }
 | |
| 
 | |
| func newListSchedulerEnqueueEventsHandlerFunc(inspector *inspeq.Inspector) http.HandlerFunc {
 | |
| 	return func(w http.ResponseWriter, r *http.Request) {
 | |
| 		entryID := mux.Vars(r)["entry_id"]
 | |
| 		pageSize, pageNum := getPageOptions(r)
 | |
| 		events, err := inspector.ListSchedulerEnqueueEvents(
 | |
| 			entryID, inspeq.PageSize(pageSize), inspeq.Page(pageNum))
 | |
| 		if err != nil {
 | |
| 			http.Error(w, err.Error(), http.StatusInternalServerError)
 | |
| 			return
 | |
| 		}
 | |
| 		resp := ListSchedulerEnqueueEventsResponse{
 | |
| 			Events: toSchedulerEnqueueEvents(events),
 | |
| 		}
 | |
| 		if err := json.NewEncoder(w).Encode(resp); err != nil {
 | |
| 			http.Error(w, err.Error(), http.StatusInternalServerError)
 | |
| 			return
 | |
| 		}
 | |
| 	}
 | |
| }
 |