// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System.IO; using System.Threading; using System.Threading.Tasks; using GraphQL; using Microsoft.AspNetCore.WebUtilities; using Squidex.Infrastructure; using Squidex.Infrastructure.Json; namespace Squidex.Domain.Apps.Entities.Contents.GraphQL { public sealed class DefaultDocumentWriter : IDocumentWriter { private readonly IJsonSerializer jsonSerializer; public DefaultDocumentWriter(IJsonSerializer jsonSerializer) { Guard.NotNull(jsonSerializer, nameof(jsonSerializer)); this.jsonSerializer = jsonSerializer; } public async Task WriteAsync(Stream stream, T value, CancellationToken cancellationToken = default) { await using (var buffer = new FileBufferingWriteStream()) { jsonSerializer.Serialize(value, buffer, true); await buffer.DrainBufferAsync(stream, cancellationToken); } } } }