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

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

            if (hashes.Count == 0)
            {
                throw new Exception("empty response, object range is invalid (expected 'Offset|Length')");
            }
            return($"\"{new UInt256(hashes[0])}\"");
        }
Пример #2
0
        private static async Task <string> 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]);
            var   res   = await client.GetObjectPayloadRangeData(addr, range, options : new CallOptions {
                Ttl = 2
            }, context : cancellation);

            return(Utility.StrictUTF8.GetString(res));
        }