Esempio n. 1
0
        public async Task <OneOf <Success, Exception> > WriteAsync(StorageFile file, CancellationToken cancellationToken = default)
        {
            byte[] data;

            if (file.Stream is MemoryStream memory)
            {
                data = memory.ToArray();
            }
            else
            {
                data = await file.Stream.ToArrayAsync(cancellationToken);

                file.Stream.Dispose();
                file.Stream = _memory.GetStream(data);
            }

            var result = await _impl.WriteAsync(file, cancellationToken);

            if (result.IsT0)
            {
                var cache = new Cache
                {
                    Data      = data,
                    MediaType = file.MediaType
                };

                await _redis.SetObjectAsync(_options.Prefix + file.Name, cache, _options.Expiry, cancellationToken : CancellationToken.None); // don't cancel
            }

            return(result);
        }