public MdpClient() { Configuration = new MdpConfiguration(); FileList = new MdpFileList(); actions.Add("AddFiles", AddFiles); actions.Add("Config", Configure); }
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); }
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); } } }