package transfer type TransferStatus string const ( TransferStatusPending TransferStatus = "pending" TransferStatusAccepted TransferStatus = "accepted" TransferStatusRejected TransferStatus = "rejected" TransferStatusCompleted TransferStatus = "completed" TransferStatusError TransferStatus = "error" TransferStatusCanceled TransferStatus = "canceled" TransferStatusActive TransferStatus = "active" ) type TransferType string const ( TransferTypeSend TransferType = "send" TransferTypeReceive TransferType = "receive" ) type ContentType string const ( ContentTypeFile ContentType = "file" ContentTypeText ContentType = "text" ContentTypeFolder ContentType = "folder" ) // Transfer type Transfer struct { ID string `json:"id" binding:"required"` // 传输会话 ID Sender Sender `json:"sender" binding:"required"` // 发送者 FileName string `json:"file_name"` // 文件名 FileSize int64 `json:"file_size"` // 文件大小 (字节) SavePath string `json:"savePath"` // 保存路径 Status TransferStatus `json:"status"` // 传输状态 Progress Progress `json:"progress"` // 传输进度 Type TransferType `json:"type"` // 进度类型 ContentType ContentType `json:"content_type"` // 内容类型 Text string `json:"text"` // 文本内容 ErrorMsg string `json:"error_msg"` // 错误信息 Token string `json:"token"` // 用于上传的凭证 DecisionChan chan Decision `json:"-"` // 用户决策通道 } type Sender struct { ID string `json:"id" binding:"required"` // 发送者 ID Name string `json:"name" binding:"required"` // 发送者名称 } // Progress 用户前端传输进度 type Progress struct { Current int64 `json:"current"` // 当前进度 Total int64 `json:"total"` // 总进度 Speed float64 `json:"speed"` // 速度 } // Decision 用户前端决策 type Decision struct { ID string `json:"id"` // 传输会话 ID Accepted bool `json:"accepted"` SavePath string `json:"save_path"` } // TransferAskResponse 握手回应 type TransferAskResponse struct { ID string `json:"id"` // 传输会话 ID Accepted bool `json:"accepted"` Token string `json:"token,omitempty"` // 用于上传的凭证 Message string `json:"message,omitempty"` // 错误信息 } // TransferUploadResponse 上传回应 type TransferUploadResponse struct { ID string `json:"id"` // 传输会话 ID Message string `json:"message"` }