package api import ( "net/http" "github.com/gin-gonic/gin" ) // ---- 控制台连接(VNC / 串口) ---- type createConsoleConnectionRequest struct { Region string `json:"region"` SSHPublicKey string `json:"sshPublicKey" binding:"required"` } func (h *ociConfigHandler) createConsoleConnection(c *gin.Context) { id, ok := pathID(c) if !ok { return } var req createConsoleConnectionRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } conn, err := h.svc.CreateConsoleConnection(c.Request.Context(), id, req.Region, c.Param("instanceId"), req.SSHPublicKey) if err != nil { respondError(c, err) return } c.JSON(http.StatusCreated, conn) } func (h *ociConfigHandler) listConsoleConnections(c *gin.Context) { id, ok := pathID(c) if !ok { return } connections, err := h.svc.ConsoleConnections(c.Request.Context(), id, c.Query("region"), c.Param("instanceId")) if err != nil { respondError(c, err) return } c.JSON(http.StatusOK, connections) } func (h *ociConfigHandler) deleteConsoleConnection(c *gin.Context) { id, ok := pathID(c) if !ok { return } if err := h.svc.DeleteConsoleConnection(c.Request.Context(), id, c.Query("region"), c.Param("connectionId")); err != nil { respondError(c, err) return } c.Status(http.StatusNoContent) }