ZLib.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System.IO;
  4. #if NET6_0_OR_GREATER
  5. using System.IO.Compression;
  6. #else
  7. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities.Zlib;
  8. #endif
  9. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities.IO.Compression
  10. {
  11. internal static class ZLib
  12. {
  13. internal static Stream CompressOutput(Stream stream, int zlibCompressionLevel, bool leaveOpen = false)
  14. {
  15. #if NET6_0_OR_GREATER
  16. return new ZLibStream(stream, GetCompressionLevel(zlibCompressionLevel), leaveOpen);
  17. #else
  18. return leaveOpen
  19. ? new ZOutputStreamLeaveOpen(stream, zlibCompressionLevel, false)
  20. : new ZOutputStream(stream, zlibCompressionLevel, false);
  21. #endif
  22. }
  23. internal static Stream DecompressInput(Stream stream)
  24. {
  25. #if NET6_0_OR_GREATER
  26. return new ZLibStream(stream, CompressionMode.Decompress, leaveOpen: false);
  27. #else
  28. return new ZInputStream(stream);
  29. #endif
  30. }
  31. #if NET6_0_OR_GREATER
  32. internal static CompressionLevel GetCompressionLevel(int zlibCompressionLevel)
  33. {
  34. return zlibCompressionLevel switch
  35. {
  36. 0 => CompressionLevel.NoCompression,
  37. 1 or 2 or 3 => CompressionLevel.Fastest,
  38. 7 or 8 or 9 => CompressionLevel.SmallestSize,
  39. _ => CompressionLevel.Optimal,
  40. };
  41. }
  42. #endif
  43. }
  44. }
  45. #pragma warning restore
  46. #endif