17 type FileTransfer struct {
20 ReferenceNumber []byte
22 TransferSize []byte // total size of all items in the folder. Only used in FolderUpload action
23 FolderItemCount []byte
26 fileResumeData *FileResumeData
30 func (ft *FileTransfer) String() string {
32 out := fmt.Sprintf("%s\t %v", ft.FileName, percentComplete)
37 func (ft *FileTransfer) ItemCount() int {
38 return int(binary.BigEndian.Uint16(ft.FolderItemCount))
41 type folderUpload struct {
48 func (fu *folderUpload) FormattedPath() string {
49 pathItemLen := binary.BigEndian.Uint16(fu.PathItemCount[:])
51 var pathSegments []string
52 pathData := fu.FileNamePath
54 // TODO: implement scanner interface instead?
55 for i := uint16(0); i < pathItemLen; i++ {
57 pathSegments = append(pathSegments, string(pathData[3:3+segLen]))
58 pathData = pathData[3+segLen:]
61 return filepath.Join(pathSegments...)