DefaultStreamCompressor.cs 740 B

1234567891011121314151617181920212223242526272829
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.IO.Compression;
  5. using System.Linq;
  6. using System.Threading.Tasks;
  7. namespace JsonRPC4.Common.Tools
  8. {
  9. public class DefaultStreamCompressor : IStreamCompressor
  10. {
  11. public bool TryGetCompressionStream(Stream uncompressedStream, string encoding, CompressionMode mode, out Stream compressedStream)
  12. {
  13. switch (encoding)
  14. {
  15. case "gzip":
  16. compressedStream = new GZipStream(uncompressedStream, mode, leaveOpen: false);
  17. return true;
  18. case "deflate":
  19. compressedStream = new DeflateStream(uncompressedStream, mode, leaveOpen: false);
  20. return true;
  21. default:
  22. compressedStream = uncompressedStream;
  23. return false;
  24. }
  25. }
  26. }
  27. }