private async Task <Blog> BuildBlog(BlogDocument blogDocument) { if (blogDocument is null) { throw new ArgumentNullException(nameof(blogDocument)); } var uncompressedBody = new MemoryStream(); using (var zip = new GZipStream(blogDocument.Body, CompressionMode.Decompress, true)) { await zip.CopyToAsync(uncompressedBody); } uncompressedBody.Position = 0L; var blog = new Blog( new Guid(blogDocument.Id), blogDocument.Version, blogDocument.Created, blogDocument.Updated, blogDocument.Author, uncompressedBody); return(blog); }
public async Task <Blog> Save(Blog inputBlog) { Blog loadedBlog; using (var context = new DynamoDBContext(_Client)) { if (inputBlog is null) { throw new ArgumentNullException(nameof(inputBlog)); } var compressedStream = new MemoryStream(); using (var zip = new GZipStream(compressedStream, CompressionMode.Compress, true)) { await inputBlog.Body.CopyToAsync(zip); } var blogId = inputBlog.Id ?? Guid.NewGuid(); var blogDoc = new BlogDocument { Id = blogId.ToString(), Version = inputBlog.Version, Created = inputBlog.Created, Updated = inputBlog.Updated, Author = inputBlog.Author, Body = compressedStream }; await context.SaveAsync <BlogDocument>(blogDoc); loadedBlog = await LoadBlog(context, blogId); } return(loadedBlog); }