Exemplo n.º 1
0
 /// <summary>
 /// Set possibly file extension properties from a FileInfo object:
 /// - size
 /// - checksum
 /// </summary>
 /// <returns></returns>
 public static async Task SetFileExtensionProperties(this FileStacExtension fileStacExtension,
                                                     Stream stream,
                                                     HashType hashType          = HashType.SHA1,
                                                     MultibaseEncoding encoding = MultibaseEncoding.Base16Lower)
 {
     await fileStacExtension.SetFileCheckSum(hashType, encoding, uri => stream);
 }
Exemplo n.º 2
0
 /// <summary>
 /// Set possibly file extension properties from a FileInfo object:
 /// - size
 /// - checksum
 /// </summary>
 /// <returns></returns>
 public static async Task SetFileExtensionProperties(this FileStacExtension fileStacExtension,
                                                     FileInfo file,
                                                     HashType hashType          = HashType.SHA1,
                                                     MultibaseEncoding encoding = MultibaseEncoding.Base16Lower)
 {
     fileStacExtension.Size = Convert.ToUInt64(file.Length);
     await fileStacExtension.SetFileCheckSum(hashType, encoding, uri => file.OpenRead());
 }
Exemplo n.º 3
0
        /// <summary>
        /// Add the checksum property of the file extension
        /// </summary>
        /// <returns></returns>
        public static async Task SetFileCheckSum(this FileStacExtension fileStacExtension,
                                                 HashType hashType,
                                                 MultibaseEncoding encoding,
                                                 Func <Uri, Stream> uriStreamer)
        {
            Multihash mh = null;

            using (var stream = uriStreamer(fileStacExtension.StacAsset.Uri))
            {
                byte[] data = null;
                using (var mem = new MemoryStream())
                {
                    await stream.CopyToAsync(mem);

                    data = mem.ToArray();
                    fileStacExtension.Size = Convert.ToUInt64(mem.Length);
                }
                mh = Multihash.Sum(hashType, data);
            }
            fileStacExtension.Checksum = mh;
        }