| 12345678910111213141516171819202122232425262728293031 | using System;using System.IO;using System.Threading.Tasks;namespace MediaBrowser.Controller.ClientEvent{    /// <inheritdoc />    public class ClientEventLogger : IClientEventLogger    {        private readonly IServerApplicationPaths _applicationPaths;        /// <summary>        /// Initializes a new instance of the <see cref="ClientEventLogger"/> class.        /// </summary>        /// <param name="applicationPaths">Instance of the <see cref="IServerApplicationPaths"/> interface.</param>        public ClientEventLogger(IServerApplicationPaths applicationPaths)        {            _applicationPaths = applicationPaths;        }        /// <inheritdoc />        public async Task<string> WriteDocumentAsync(string clientName, string clientVersion, Stream fileContents)        {            var fileName = $"upload_{clientName}_{clientVersion}_{DateTime.UtcNow:yyyyMMddHHmmss}_{Guid.NewGuid():N}.log";            var logFilePath = Path.Combine(_applicationPaths.LogDirectoryPath, fileName);            await using var fileStream = new FileStream(logFilePath, FileMode.CreateNew, FileAccess.Write, FileShare.None);            await fileContents.CopyToAsync(fileStream).ConfigureAwait(false);            return fileName;        }    }}
 |