Ejemplo n.º 1
0
        public async Task <Reply> AddNode(R2PackagePart pkgPart, CancellationToken cancelTkn)
        {
            var errors   = new List <string>();
            var warnings = new List <string>();

            if (!pkgPart.IsValid(ref errors))
            {
                goto ReturnReply;
            }

            if (await AlreadyInServer(pkgPart, cancelTkn))
            {
                warnings.Add($"“{pkgPart.PackageFilename}” part {pkgPart.PartNumber} of {pkgPart.TotalParts} already exists in the server.");
                goto ReturnReply;
            }

            var dict = await _client.PostNode(pkgPart, cancelTkn);

            //todo: add status and result to returned reply

ReturnReply:
            return(new Reply
            {
                Errors = errors,
                Warnings = warnings
            });
        }
Ejemplo n.º 2
0
        //{
        //    try
        //    {
        //        return await _client.List<R2PackagePart, PartsByPkgName1>(cancelTkn, packageFilename);
        //    }
        //    catch (Exception ex)
        //    {

        //        throw ex;
        //    }
        //}


        private async Task <bool> AlreadyInServer(R2PackagePart part, CancellationToken cancelTkn)
        {
            var list = await ListByPkgHash(part.PackageFilename, part.PackageHash, cancelTkn);

            return(list.Any(x => x.PartHash == part.PartHash &&
                            x.PartNumber == part.PartNumber &&
                            x.TotalParts == part.TotalParts));
        }
Ejemplo n.º 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));
        }
Ejemplo n.º 4
0
        public async Task SendParts(IEnumerable <string> partPaths, R2Package localPkg, CancellationToken cancelTkn)
        {
            for (int i = 0; i < partPaths.Count(); i++)
            {
                var path     = partPaths.ElementAt(i);
                var partNode = new R2PackagePart
                {
                    PackageFilename = localPkg.Filename,
                    PackageHash     = localPkg.Hash,
                    PartHash        = path.SHA1ForFile(),
                    PartNumber      = i + 1,
                    TotalParts      = partPaths.Count(),
                    Base64Content   = _fileIO.ReadBase64(path)
                };
                SetStatus($"Sending {partNode.Description} ...");
                var reply = await _partMgr.AddNode(partNode, cancelTkn);

                if (reply.Failed)
                {
                    throw new Exception(reply.ErrorsText);
                }
            }
        }
Ejemplo n.º 5
0
 public R2PackagePartValidations()
 {
     _part = GetValidPkgPart();
 }