Example #1
0
        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);
        }
Example #2
0
        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());
        }
Example #3
0
        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));
        }
Example #4
0
        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());
        }