diff --git a/src/Titanium.Web.Proxy/Compression/CompressionFactory.cs b/src/Titanium.Web.Proxy/Compression/CompressionFactory.cs index fdae2ce3d..fcfc86aaa 100644 --- a/src/Titanium.Web.Proxy/Compression/CompressionFactory.cs +++ b/src/Titanium.Web.Proxy/Compression/CompressionFactory.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.IO.Compression; +using Titanium.Web.Proxy.Helpers; using Titanium.Web.Proxy.Http; namespace Titanium.Web.Proxy.Compression @@ -18,6 +19,8 @@ internal static Stream Create(string type, Stream stream, bool leaveOpen = true) return new GZipStream(stream, CompressionMode.Compress, leaveOpen); case KnownHeaders.ContentEncodingDeflate: return new DeflateStream(stream, CompressionMode.Compress, leaveOpen); + case KnownHeaders.ContentEncodingBrotli: + return new BrotliSharpLib.BrotliStream(stream, CompressionMode.Compress, leaveOpen); default: throw new Exception($"Unsupported compression mode: {type}"); } diff --git a/src/Titanium.Web.Proxy/Compression/DecompressionFactory.cs b/src/Titanium.Web.Proxy/Compression/DecompressionFactory.cs index f8a0fc1dd..713c678fb 100644 --- a/src/Titanium.Web.Proxy/Compression/DecompressionFactory.cs +++ b/src/Titanium.Web.Proxy/Compression/DecompressionFactory.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.IO.Compression; +using Titanium.Web.Proxy.Helpers; using Titanium.Web.Proxy.Http; namespace Titanium.Web.Proxy.Compression @@ -18,6 +19,8 @@ internal static Stream Create(string type, Stream stream, bool leaveOpen = true) return new GZipStream(stream, CompressionMode.Decompress, leaveOpen); case KnownHeaders.ContentEncodingDeflate: return new DeflateStream(stream, CompressionMode.Decompress, leaveOpen); + case KnownHeaders.ContentEncodingBrotli: + return new BrotliSharpLib.BrotliStream(stream, CompressionMode.Decompress, leaveOpen); default: throw new Exception($"Unsupported decompression mode: {type}"); } diff --git a/src/Titanium.Web.Proxy/Http/KnownHeaders.cs b/src/Titanium.Web.Proxy/Http/KnownHeaders.cs index d6e664242..9636a1fdd 100644 --- a/src/Titanium.Web.Proxy/Http/KnownHeaders.cs +++ b/src/Titanium.Web.Proxy/Http/KnownHeaders.cs @@ -39,6 +39,7 @@ public static class KnownHeaders public const string ContentEncoding = "content-encoding"; public const string ContentEncodingDeflate = "deflate"; public const string ContentEncodingGzip = "gzip"; + public const string ContentEncodingBrotli = "br"; public const string Location = "Location"; diff --git a/src/Titanium.Web.Proxy/Titanium.Web.Proxy.csproj b/src/Titanium.Web.Proxy/Titanium.Web.Proxy.csproj index e4ac9802b..996f3deca 100644 --- a/src/Titanium.Web.Proxy/Titanium.Web.Proxy.csproj +++ b/src/Titanium.Web.Proxy/Titanium.Web.Proxy.csproj @@ -13,6 +13,7 @@ + diff --git a/src/Titanium.Web.Proxy/Titanium.Web.Proxy.nuspec b/src/Titanium.Web.Proxy/Titanium.Web.Proxy.nuspec index 0eccf8634..7a0c21d76 100644 --- a/src/Titanium.Web.Proxy/Titanium.Web.Proxy.nuspec +++ b/src/Titanium.Web.Proxy/Titanium.Web.Proxy.nuspec @@ -16,6 +16,7 @@ +