public void Test_ListFile_Without_Stat()
        {
            var localPath     = this.Fixture.CreateFile("foo");
            var localFileName = Path.GetFileName(localPath);
            var remotePath    = "/" + localFileName;

            this.Client.MakeFile(localPath, remotePath);
            var            listResults = this.Client.ListFile("/", 100, 0, false);
            ListFileResult foundResult = null;

            foreach (var file in listResults)
            {
                if (file.Name == localFileName)
                {
                    foundResult = file;
                }
            }
            Assert.AreEqual(localFileName, foundResult.Name);
            Assert.AreEqual(0, foundResult.Ctime);
            Assert.AreEqual(0, foundResult.Mtime);
            Assert.AreEqual(0, foundResult.Gid);
            Assert.AreEqual(0, foundResult.Uid);
            Assert.IsNull(foundResult.Checksum);
            Assert.AreEqual(0, foundResult.Size);
            Assert.IsNull(foundResult.ContentType);
            this.Client.DeleteFile(remotePath);
        }
        public void Test_ListFile_Success()
        {
            var localPath     = this.Fixture.CreateFile("foo");
            var localFileName = Path.GetFileName(localPath);;
            var remotePath    = "/" + localFileName;

            this.Client.MakeFile(localPath, remotePath);
            var            listResults = this.Client.ListFile("/", 100, 0, true);
            ListFileResult foundResult = null;

            foreach (var file in listResults)
            {
                if (file.Name == localFileName)
                {
                    foundResult = file;
                }
            }
            Assert.AreEqual(localFileName, foundResult.Name);
            Assert.IsTrue(foundResult.Ctime > 0);
            Assert.IsTrue(foundResult.Mtime > 0);
            Assert.IsTrue(foundResult.Gid > 0);
            Assert.IsTrue(foundResult.Uid > 0);
            Assert.AreEqual(3, foundResult.Size);
            Assert.IsNotNull(foundResult.Checksum);
            this.Client.DeleteFile(remotePath);
        }
Esempio n. 3
0
        private void DownloadFolder(object path)
        {
            Client         client = new Client();
            ListFileResult flst   = client.GetFileList(path as string);

            foreach (Item item in flst.list)
            {
                if (stopFlag)
                {
                    return;
                }
                if (item.isdir == 0)
                {
                    if (File.Exists(Program.Config.DefaultDownloadPath + item.path.Replace("/", "\\")))
                    {
                        continue;
                    }
retry:
                    DownloadResult dr = client.GetDownload(item.path);
                    if (dr.urls == null)
                    {
                        goto retry;
                    }
                    if (dr.urls.Length == 1 && dr.urls[0].url.Contains("wenxintishi"))
                    {
                        continue;
                    }
                    List <string> urls = new List <string>();
                    foreach (Url url in dr.urls)
                    {
                        urls.Add(url.url);
                    }
                    string p = Program.Config.DefaultDownloadPath + item.path.Remove(item.path.LastIndexOf('/')).Replace("/", "\\");
                    if (!Directory.Exists(p))
                    {
                        Directory.CreateDirectory(p);
                    }
                    lblDownloading.Text = item.path;
                    new SingleDownloadForm(urls, p, true).ShowDialog();
                }
                else
                {
                    DownloadFolder(item.path);
                }
            }
        }
        private void RefreshPath(string path)
        {
            string         rpath = (path == "" ? "/" : path);
            ListFileResult flst  = client.GetFileList(rpath);

            if (flst.list == null)
            {
                return;
            }
            if (flst.list.Length == (rpath == "/" ? listView1.Items.Count : listView1.Items.Count - 1))
            {
                foreach (Item item in flst.list)
                {
                    if (!listView1.Items.ContainsKey(item.path))
                    {
                        metroProgressSpinner1.Visible = false;
                        return;
                    }
                }
            }
            listView1.BeginUpdate();
            listView1.Items.Clear();
            if (rpath != "/")
            {
                listView1.Items.Add(new ListViewItem("..", "FolderType"));
            }
            foreach (Item item in flst.list)
            {
                ListViewItem lvItem = new ListViewItem(item.server_filename);
                if (item.isdir == 1)
                {
                    if (item.server_filename == "apps")
                    {
                        lvItem.ImageKey = "Apps";
                    }
                    else
                    {
                        lvItem.ImageKey = "FolderType";
                    }

                    lvItem.SubItems.AddRange(new string[] { "", TimeStamp2DateTime(item.server_ctime.ToString()).ToString() });
                }
                else
                {
                    if (item.server_filename.Contains("."))
                    {
                        switch (item.server_filename.Substring(item.server_filename.LastIndexOf(".")).ToLower())
                        {
                            #region TypeSwitch
                        case ".apk":
                            lvItem.ImageKey = "ApkType";
                            break;

                        case ".cad":
                            lvItem.ImageKey = "CadType";
                            break;

                        case ".doc":
                        case ".docx":
                            lvItem.ImageKey = "DocType";
                            break;

                        case ".exe":
                            lvItem.ImageKey = "ExeType";
                            break;

                        case ".png":
                        case ".jpg":
                        case ".jpeg":
                        case ".gif":
                        case ".bmp":
                        case ".tiff":
                            lvItem.ImageKey = "ImgType";
                            break;

                        case ".ipa":
                            lvItem.ImageKey = "IpaType";
                            break;

                        case ".mp3":
                        case ".flac":
                        case ".ogg":
                        case ".wav":
                        case ".wma":
                        case ".aac":
                        case ".ape":
                            lvItem.ImageKey = "MusicType";
                            break;

                        case ".ppt":
                        case ".pptx":
                            lvItem.ImageKey = "PptType";
                            break;

                        case ".rar":
                        case ".zip":
                        case ".7z":
                        case ".tar":
                        case ".gz":
                            lvItem.ImageKey = "RarType";
                            break;

                        case ".torrent":
                            lvItem.ImageKey = "TorrentType";
                            break;

                        case ".txt":
                            lvItem.ImageKey = "TxtType";
                            break;

                        case ".mp4":
                        case ".avi":
                        case ".mkv":
                        case ".rm":
                        case ".rmvb":
                        case ".flv":
                        case ".wmv":
                        case ".3gp":
                        case ".mov":
                            lvItem.ImageKey = "VideoType";
                            break;

                        case ".vsd":
                            lvItem.ImageKey = "VsdType";
                            break;

                        case ".xls":
                        case ".xlsx":
                        case ".csv":
                            lvItem.ImageKey = "XlsType";
                            break;

                        default:
                            lvItem.ImageKey = "OtherType";
                            break;
                            #endregion
                        }
                    }
                    else
                    {
                        lvItem.ImageKey = "OtherType";
                    }

                    lvItem.SubItems.AddRange(new string[] { GetSizeString(item.size), TimeStamp2DateTime(item.server_ctime.ToString()).ToString() });
                }
                listView1.Items.Add(lvItem);
            }
            listView1.EndUpdate();
            textBox1.Text = rpath;
            listView1.Items[0].Selected = true;
            listView1.SelectedItems.Clear();
            metroProgressSpinner1.Visible = false;
        }