コード例 #1
0
        private static async Task <byte[]> GetHashAsync(Client client, Address addr, string[] ps, CancellationToken cancellation)
        {
            if (ps.Length == 0 || ps[0] == "")
            {
                Object obj = await client.GetObjectHeader(cancellation, new ObjectHeaderParams()
                {
                    Address = addr
                }, new CallOptions { Ttl = 2 });

                return(obj.PayloadChecksum.Sum.ToByteArray());
            }
            Range         range  = ParseRange(ps[0]);
            List <byte[]> hashes = await client.GetObjectPayloadRangeHash(cancellation, new RangeChecksumParams()
            {
                Address = addr, Ranges = new List <Range>()
                {
                    range
                }, Type = ChecksumType.Sha256, Salt = Array.Empty <byte>()
            }, new CallOptions { Ttl = 2 });

            if (hashes.Count == 0)
            {
                throw new Exception("empty response, object range is invalid (expected 'Offset|Length')");
            }
            return(hashes[0]);
        }
コード例 #2
0
        private static Task <byte[]> GetRangeAsync(Client client, Address addr, string[] ps, CancellationToken cancellation)
        {
            if (ps.Length == 0)
            {
                throw new FormatException("missing object range (expected 'Offset|Length')");
            }
            Range range = ParseRange(ps[0]);

            return(client.GetObjectPayloadRangeData(cancellation, new RangeDataParams()
            {
                Address = addr, Range = range
            }, new CallOptions {
                Ttl = 2
            }));
        }