package handler import ( "errors" "net/http" "galaxy/model/order" "galaxy/model/rest" "galaxy/server/internal/repo" "github.com/gin-gonic/gin" ) func OrderHandler(c *gin.Context, executor CommandExecutor) { var cmd rest.Command if errorResponse(c, c.ShouldBindJSON(&cmd)) { return } commands := make([]order.DecodableCommand, len(cmd.Commands)) for i := range cmd.Commands { command, err := repo.ParseOrder(cmd.Commands[i], validateCommand) if errorResponse(c, err) { return } commands[i] = command } if len(commands) == 0 { errorResponse(c, errors.New("no commands given")) return } if errorResponse(c, executor.ValidateOrder(cmd.Actor, commands...)) { return } c.Status(http.StatusNoContent) }