Files
micromdm/platform/command/view.go
2023-07-11 18:07:42 -05:00

55 lines
1.4 KiB
Go

package command
import (
"context"
"net/http"
"github.com/go-kit/kit/endpoint"
"github.com/gorilla/mux"
"github.com/micromdm/micromdm/mdm"
"github.com/pkg/errors"
)
func (svc *CommandService) ViewQueue(ctx context.Context, udid string) ([]*mdm.Command, error) {
commands, err := svc.queue.ViewQueue(
ctx,
mdm.CheckinEvent{Command: mdm.CheckinCommand{UDID: udid}},
)
if err != nil {
return nil, errors.Wrap(err, "clearing command queue")
}
return commands, nil
}
type viewQueueRequest struct {
UDID string
}
type viewQueueResponse struct {
Err error `json:"error,omitempty"`
Commands []*mdm.Command `json:"commands,omitempty"`
}
func (r viewQueueResponse) Failed() error { return r.Err }
func (r viewQueueResponse) StatusCode() int { return http.StatusOK }
func decodeViewQueueRequest(ctx context.Context, r *http.Request) (interface{}, error) {
return viewQueueRequest{UDID: mux.Vars(r)["udid"]}, nil
}
// MakeViewQueueEndpoint creates an endpoint which views device queues.
func MakeViewQueueEndpoint(svc Service) endpoint.Endpoint {
return func(ctx context.Context, request interface{}) (interface{}, error) {
req := request.(viewQueueRequest)
if req.UDID == "" {
return viewQueueResponse{Err: errEmptyRequest}, nil
}
commands, err := svc.ViewQueue(ctx, req.UDID)
if err != nil {
return viewQueueResponse{Err: err}, nil
}
return viewQueueResponse{Commands: commands}, nil
}
}