18 type FileTransfer struct {
21 ReferenceNumber []byte
23 TransferSize []byte // total size of all items in the folder. Only used in FolderUpload action
24 FolderItemCount []byte
27 fileResumeData *FileResumeData
31 func (ft *FileTransfer) String() string {
33 out := fmt.Sprintf("%s\t %v", ft.FileName, percentComplete)
38 func (ft *FileTransfer) ItemCount() int {
39 return int(binary.BigEndian.Uint16(ft.FolderItemCount))
42 type folderUpload struct {
49 func (fu *folderUpload) FormattedPath() string {
50 pathItemLen := binary.BigEndian.Uint16(fu.PathItemCount[:])
52 var pathSegments []string
53 pathData := fu.FileNamePath
55 // TODO: implement scanner interface instead?
56 for i := uint16(0); i < pathItemLen; i++ {
58 pathSegments = append(pathSegments, string(pathData[3:3+segLen]))
59 pathData = pathData[3+segLen:]
62 return filepath.Join(pathSegments...)