示例#1
0
        public MdpClient()
        {
            Configuration = new MdpConfiguration();
            FileList      = new MdpFileList();

            actions.Add("AddFiles", AddFiles);
            actions.Add("Config", Configure);
        }
示例#2
0
        public void AddFilesFromJson(string s, ListWriteMode mode = ListWriteMode.Append)
        {
            MdpFileList        mdpFileList = JsonConvert.DeserializeObject <MdpFileList>(s);
            List <MdpFileInfo> filesInfos  = new List <MdpFileInfo>();

            foreach (MdpFileInfo fileInfo in mdpFileList.Files)
            {
                string      fileRelativePath = fileInfo.Name;
                MdpFileInfo file;
                if (fileRelativePath.EndsWith("/"))
                {
                    file = new MdpDirectoryInfo(fileRelativePath, fileInfo.Hash);
                }
                else
                {
                    file = new MdpFileInfo(fileRelativePath, fileInfo.Hash);
                }
                filesInfos.Add(file);
            }
            AddFiles(filesInfos, mode);
        }
示例#3
0
        private void DownloadCorruptedFiles(string path, MdpFileInfo[] infos, string remoteDirUrl = "")
        {
            WebClient client    = new WebClient();
            string    baseDlUrl = MdpApi.Resources.GetFilesDownloadUrl(Configuration.RemoteFileServer, remoteDirUrl);

            foreach (MdpFileInfo fileInfo in infos)
            {
                string fullPath = Path.GetFullPath(Path.Combine(path, fileInfo.Name));
                Directory.GetParent(fullPath).Create();

                if (fileInfo is MdpDirectoryInfo dirInfo)
                {
                    MdpRemoteServer remote = new MdpRemoteServer();
                    string          json   = remote.GetFilesList(Configuration.RemoteFileServer, remoteDirUrl + "/" + dirInfo.Name);
                    MdpFileList     list   = new MdpFileList();
                    list.AddFilesFromJson(json);
                    DownloadCorruptedFiles(fullPath, list.Files, remoteDirUrl + "/" + dirInfo.Name);
                }
                else
                {
                    client.DownloadFile(baseDlUrl + fileInfo.Name, fullPath);
                }
            }
        }