public async Task WriteAsync(string key, ICachedImage cachedImage) { ImageMetadataModel model = new ImageMetadataModel() { Created = cachedImage.Metadata.Created, Cache = cachedImage.Metadata.Cache, Hash = cachedImage.Metadata.Hash, Key = cachedImage.Metadata.Key, LoaderSource = cachedImage.Metadata.LoaderSource, Filters = cachedImage.Metadata.Filters, LoaderType = cachedImage.Metadata.LoaderType, MimeType = cachedImage.Metadata.MimeType, Width = cachedImage.Metadata.Width, Height = cachedImage.Metadata.Height, DPR = cachedImage.Metadata.DPR, FileLength = cachedImage.Metadata.FileLength }; //upload image metadata await ImageMetadatas.ReplaceOneAsync(Builders <ImageMetadataModel> .Filter.Where(x => x.Key == key), model, new ReplaceOptions() { IsUpsert = true }); using (Stream cachedImageStream = await cachedImage.OpenReadAsync()) { //upload transformed image await ImageBuffer.UploadFromStreamAsync(key, cachedImageStream); } }
public async Task <ICachedImage> ReadAsync(string key) { ImageMetadataModel foundMetadata = await ImageMetadatas .AsQueryable() .FirstOrDefaultAsync(x => x.Key == key); if (foundMetadata == null) { return(null); } CachedImage cachedImage = new CachedImage(foundMetadata, async() => await ImageBuffer.OpenDownloadStreamByNameAsync(key)); return(cachedImage); }