using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace SharpCompress; internal static class StreamValidationExtensions { internal static Stream RequireReadable(this Stream stream) { stream.NotNull(nameof(stream)); if (!stream.CanRead) { throw new ArgumentException("Stream must be readable", nameof(stream)); } return stream; } internal static Stream RequireSeekable(this Stream stream) { stream.NotNull(nameof(stream)); if (!stream.CanSeek) { throw new ArgumentException("Stream must be seekable", nameof(stream)); } return stream; } internal static IReadOnlyList RequireSeekable(this IReadOnlyList streams) { streams.NotNull(nameof(streams)); foreach (var stream in streams) { stream.RequireSeekable(); } return streams; } internal static IReadOnlyList RequireReadable(this IEnumerable streams) { streams.NotNull(nameof(streams)); var streamArray = streams as IReadOnlyList ?? streams.ToArray(); foreach (var stream in streamArray) { stream.RequireReadable(); } return streamArray; } }