public async Task <bool> TargetIsOutdated(CancellationToken cancelTkn) { if (!ValidateTargetFile()) { return(false); } _remotePkg = null; var localPkg = _file.ToR2Package(TargetPath); var fName = localPkg.Filename; SetStatus($"Getting packages named “{fName}” ..."); var list = await _remote.ListByFilename(fName, cancelTkn); if (list.Count == 0) { throw Fault .NoItems($"Server packages named “{fName}”"); } if (list.Count > 1) { throw Fault .NonSolo($"Server packages named “{fName}”", list.Count); } _remotePkg = list.Single(); return(_remotePkg.Hash != localPkg.Hash); }
public async Task <R2Ping> GetCurrentUserPing(string pkgFilename, CancellationToken cancelTkn) { var list = await _client.List <PingsForCurrentUser1>(cancelTkn); if (list.Count == 0) { throw Fault.NoItems("Pings for current user"); } var named = list.Where(x => x.PackageFilename == pkgFilename).ToList(); if (named.Count == 0) { throw Fault .NoMatch <R2Ping>("PkgFilename", pkgFilename); } if (named.Count > 1) { throw Fault .NonSolo($"Pings for {pkgFilename}", named.Count); } return(named.First()); }
public async Task <string> DownloadToTemp(R2PackagePart part, CancellationToken cancelTkn) { var byts = await _client.GetBytes <PartContentsByHash1>(cancelTkn, part.PartHash); if (byts == null) { throw Fault.NullRef <byte[]>("_client.GetBytes<PartContentsByHash1>"); } if (byts.Length == 0) { throw Fault.NoItems("byte[] from _client.GetBytes<PartContentsByHash1>()"); } return(_fileIO.WriteTempFile(byts)); }
public async Task <string> MergeAndDecompress(IEnumerable <string> orderedPartsPaths, string outputDir) { var contnt = await SevenZipper2.DecompressFromSplit (orderedPartsPaths, outputDir); if (contnt.Count() < 1) { throw Fault.NoItems("archive contents"); } if (contnt.Count() > 1) { throw Fault.NonSolo("archive contents", contnt.Count()); } return(contnt.Single()); }