/// <inheritdoc /> public async Task PutAsync(StoragePutOptions options, CancellationToken cancellationToken = default) { ValidateFileName(options.Container); ValidateFileName(options.FileName); _logger.LogDebug( "Writing file {FileName} to container {Container}", options.FileName, options.Container, options.Overwrite); if (options.Overwrite == false && File.Exists(GetFileLocation(options.Container, options.FileName))) { throw new IOException("File already exists"); } var containerLocation = GetContainerLocation(options.Container); if (!Directory.Exists(containerLocation)) { if (options.CreateContainerIfNotExists) { Directory.CreateDirectory(containerLocation); } else { throw new IOException("This container does not exist"); } } await using var streamWriter = new StreamWriter(GetFileLocation(options.Container, options.FileName), false); await options.Content.CopyToAsync(streamWriter.BaseStream, cancellationToken); await streamWriter.FlushAsync(); }
/// <inheritdoc /> public Task PutAsync(StoragePutOptions options, CancellationToken cancellationToken = default) { var stream = new MemoryStream(); options.Content.CopyTo(stream); _contents[GetFileKey(options.Container, options.FileName)] = stream.ToArray(); return(Task.CompletedTask); }