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 <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 string FindDescription(ulong barcode) { var matches = _localRepo.Find(x => x.Barcode == barcode); if (!matches.Any()) { return(null); } if (matches.Count > 1) { throw Fault.NonSolo($"Matches for barcode [{barcode}]", matches.Count); } return(matches.Single().Description); }
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()); }