Skip to content
This repository was archived by the owner on Jul 9, 2023. It is now read-only.

Commit 63a3343

Browse files
Merge pull request #500 from justcoding121/master
Brotle compression support
2 parents f316617 + 30699d9 commit 63a3343

File tree

10 files changed

+44
-9
lines changed

10 files changed

+44
-9
lines changed

docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,30 @@ <h5 class="fieldValue">Field Value</h5>
269269
</table>
270270

271271

272+
<h4 id="Titanium_Web_Proxy_Http_KnownHeaders_ContentEncodingBrotli" data-uid="Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingBrotli">ContentEncodingBrotli</h4>
273+
<div class="markdown level1 summary"></div>
274+
<div class="markdown level1 conceptual"></div>
275+
<h5 class="decalaration">Declaration</h5>
276+
<div class="codewrapper">
277+
<pre><code class="lang-csharp hljs">public const string ContentEncodingBrotli = &quot;br&quot;</code></pre>
278+
</div>
279+
<h5 class="fieldValue">Field Value</h5>
280+
<table class="table table-bordered table-striped table-condensed">
281+
<thead>
282+
<tr>
283+
<th>Type</th>
284+
<th>Description</th>
285+
</tr>
286+
</thead>
287+
<tbody>
288+
<tr>
289+
<td><a class="xref" href="https://docs.microsoft.com/dotnet/api/system.string">String</a></td>
290+
<td></td>
291+
</tr>
292+
</tbody>
293+
</table>
294+
295+
272296
<h4 id="Titanium_Web_Proxy_Http_KnownHeaders_ContentEncodingDeflate" data-uid="Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingDeflate">ContentEncodingDeflate</h4>
273297
<div class="markdown level1 summary"></div>
274298
<div class="markdown level1 conceptual"></div>

docs/index.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
"api/Titanium.Web.Proxy.Http.KnownHeaders.html": {
118118
"href": "api/Titanium.Web.Proxy.Http.KnownHeaders.html",
119119
"title": "Class KnownHeaders | Titanium Web Proxy",
120-
"keywords": "Class KnownHeaders Well known http headers. Inheritance Object KnownHeaders Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Titanium.Web.Proxy.Http Assembly : Titanium.Web.Proxy.dll Syntax public static class KnownHeaders Fields AcceptEncoding Declaration public const string AcceptEncoding = \"accept-encoding\" Field Value Type Description String Authorization Declaration public const string Authorization = \"Authorization\" Field Value Type Description String Connection Declaration public const string Connection = \"connection\" Field Value Type Description String ConnectionClose Declaration public const string ConnectionClose = \"close\" Field Value Type Description String ConnectionKeepAlive Declaration public const string ConnectionKeepAlive = \"keep-alive\" Field Value Type Description String ContentEncoding Declaration public const string ContentEncoding = \"content-encoding\" Field Value Type Description String ContentEncodingDeflate Declaration public const string ContentEncodingDeflate = \"deflate\" Field Value Type Description String ContentEncodingGzip Declaration public const string ContentEncodingGzip = \"gzip\" Field Value Type Description String ContentLength Declaration public const string ContentLength = \"content-length\" Field Value Type Description String ContentType Declaration public const string ContentType = \"content-type\" Field Value Type Description String ContentTypeBoundary Declaration public const string ContentTypeBoundary = \"boundary\" Field Value Type Description String ContentTypeCharset Declaration public const string ContentTypeCharset = \"charset\" Field Value Type Description String Expect Declaration public const string Expect = \"expect\" Field Value Type Description String Expect100Continue Declaration public const string Expect100Continue = \"100-continue\" Field Value Type Description String Host Declaration public const string Host = \"host\" Field Value Type Description String Location Declaration public const string Location = \"Location\" Field Value Type Description String ProxyAuthenticate Declaration public const string ProxyAuthenticate = \"Proxy-Authenticate\" Field Value Type Description String ProxyAuthorization Declaration public const string ProxyAuthorization = \"Proxy-Authorization\" Field Value Type Description String ProxyAuthorizationBasic Declaration public const string ProxyAuthorizationBasic = \"basic\" Field Value Type Description String ProxyConnection Declaration public const string ProxyConnection = \"Proxy-Connection\" Field Value Type Description String ProxyConnectionClose Declaration public const string ProxyConnectionClose = \"close\" Field Value Type Description String TransferEncoding Declaration public const string TransferEncoding = \"transfer-encoding\" Field Value Type Description String TransferEncodingChunked Declaration public const string TransferEncodingChunked = \"chunked\" Field Value Type Description String Upgrade Declaration public const string Upgrade = \"upgrade\" Field Value Type Description String UpgradeWebsocket Declaration public const string UpgradeWebsocket = \"websocket\" Field Value Type Description String"
120+
"keywords": "Class KnownHeaders Well known http headers. Inheritance Object KnownHeaders Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Titanium.Web.Proxy.Http Assembly : Titanium.Web.Proxy.dll Syntax public static class KnownHeaders Fields AcceptEncoding Declaration public const string AcceptEncoding = \"accept-encoding\" Field Value Type Description String Authorization Declaration public const string Authorization = \"Authorization\" Field Value Type Description String Connection Declaration public const string Connection = \"connection\" Field Value Type Description String ConnectionClose Declaration public const string ConnectionClose = \"close\" Field Value Type Description String ConnectionKeepAlive Declaration public const string ConnectionKeepAlive = \"keep-alive\" Field Value Type Description String ContentEncoding Declaration public const string ContentEncoding = \"content-encoding\" Field Value Type Description String ContentEncodingBrotli Declaration public const string ContentEncodingBrotli = \"br\" Field Value Type Description String ContentEncodingDeflate Declaration public const string ContentEncodingDeflate = \"deflate\" Field Value Type Description String ContentEncodingGzip Declaration public const string ContentEncodingGzip = \"gzip\" Field Value Type Description String ContentLength Declaration public const string ContentLength = \"content-length\" Field Value Type Description String ContentType Declaration public const string ContentType = \"content-type\" Field Value Type Description String ContentTypeBoundary Declaration public const string ContentTypeBoundary = \"boundary\" Field Value Type Description String ContentTypeCharset Declaration public const string ContentTypeCharset = \"charset\" Field Value Type Description String Expect Declaration public const string Expect = \"expect\" Field Value Type Description String Expect100Continue Declaration public const string Expect100Continue = \"100-continue\" Field Value Type Description String Host Declaration public const string Host = \"host\" Field Value Type Description String Location Declaration public const string Location = \"Location\" Field Value Type Description String ProxyAuthenticate Declaration public const string ProxyAuthenticate = \"Proxy-Authenticate\" Field Value Type Description String ProxyAuthorization Declaration public const string ProxyAuthorization = \"Proxy-Authorization\" Field Value Type Description String ProxyAuthorizationBasic Declaration public const string ProxyAuthorizationBasic = \"basic\" Field Value Type Description String ProxyConnection Declaration public const string ProxyConnection = \"Proxy-Connection\" Field Value Type Description String ProxyConnectionClose Declaration public const string ProxyConnectionClose = \"close\" Field Value Type Description String TransferEncoding Declaration public const string TransferEncoding = \"transfer-encoding\" Field Value Type Description String TransferEncodingChunked Declaration public const string TransferEncodingChunked = \"chunked\" Field Value Type Description String Upgrade Declaration public const string Upgrade = \"upgrade\" Field Value Type Description String UpgradeWebsocket Declaration public const string UpgradeWebsocket = \"websocket\" Field Value Type Description String"
121121
},
122122
"api/Titanium.Web.Proxy.Http.Request.html": {
123123
"href": "api/Titanium.Web.Proxy.Http.Request.html",

docs/xrefmap.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1281,6 +1281,12 @@ references:
12811281
commentId: F:Titanium.Web.Proxy.Http.KnownHeaders.ContentEncoding
12821282
fullName: Titanium.Web.Proxy.Http.KnownHeaders.ContentEncoding
12831283
nameWithType: KnownHeaders.ContentEncoding
1284+
- uid: Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingBrotli
1285+
name: ContentEncodingBrotli
1286+
href: api/Titanium.Web.Proxy.Http.KnownHeaders.html#Titanium_Web_Proxy_Http_KnownHeaders_ContentEncodingBrotli
1287+
commentId: F:Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingBrotli
1288+
fullName: Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingBrotli
1289+
nameWithType: KnownHeaders.ContentEncodingBrotli
12841290
- uid: Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingDeflate
12851291
name: ContentEncodingDeflate
12861292
href: api/Titanium.Web.Proxy.Http.KnownHeaders.html#Titanium_Web_Proxy_Http_KnownHeaders_ContentEncodingDeflate

src/Titanium.Web.Proxy/Compression/CompressionFactory.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.IO;
33
using System.IO.Compression;
4+
using Titanium.Web.Proxy.Helpers;
45
using Titanium.Web.Proxy.Http;
56

67
namespace Titanium.Web.Proxy.Compression
@@ -18,6 +19,8 @@ internal static Stream Create(string type, Stream stream, bool leaveOpen = true)
1819
return new GZipStream(stream, CompressionMode.Compress, leaveOpen);
1920
case KnownHeaders.ContentEncodingDeflate:
2021
return new DeflateStream(stream, CompressionMode.Compress, leaveOpen);
22+
case KnownHeaders.ContentEncodingBrotli:
23+
return new BrotliSharpLib.BrotliStream(stream, CompressionMode.Compress, leaveOpen);
2124
default:
2225
throw new Exception($"Unsupported compression mode: {type}");
2326
}

src/Titanium.Web.Proxy/Compression/DecompressionFactory.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.IO;
33
using System.IO.Compression;
4+
using Titanium.Web.Proxy.Helpers;
45
using Titanium.Web.Proxy.Http;
56

67
namespace Titanium.Web.Proxy.Compression
@@ -18,6 +19,8 @@ internal static Stream Create(string type, Stream stream, bool leaveOpen = true)
1819
return new GZipStream(stream, CompressionMode.Decompress, leaveOpen);
1920
case KnownHeaders.ContentEncodingDeflate:
2021
return new DeflateStream(stream, CompressionMode.Decompress, leaveOpen);
22+
case KnownHeaders.ContentEncodingBrotli:
23+
return new BrotliSharpLib.BrotliStream(stream, CompressionMode.Decompress, leaveOpen);
2124
default:
2225
throw new Exception($"Unsupported decompression mode: {type}");
2326
}

src/Titanium.Web.Proxy/Http/KnownHeaders.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public static class KnownHeaders
3939
public const string ContentEncoding = "content-encoding";
4040
public const string ContentEncodingDeflate = "deflate";
4141
public const string ContentEncodingGzip = "gzip";
42+
public const string ContentEncodingBrotli = "br";
4243

4344
public const string Location = "Location";
4445

src/Titanium.Web.Proxy/Shared/ProxyConstants.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Text.RegularExpressions;
4+
using Titanium.Web.Proxy.Http;
45

56
namespace Titanium.Web.Proxy.Shared
67
{
@@ -25,8 +26,9 @@ internal class ProxyConstants
2526
internal static readonly HashSet<string> ProxySupportedCompressions =
2627
new HashSet<string>(StringComparer.OrdinalIgnoreCase)
2728
{
28-
"gzip",
29-
"deflate"
29+
KnownHeaders.ContentEncodingGzip,
30+
KnownHeaders.ContentEncodingDeflate,
31+
KnownHeaders.ContentEncodingBrotli
3032
};
3133

3234
internal static readonly Regex CNRemoverRegex =

src/Titanium.Web.Proxy/Titanium.Web.Proxy.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
</PropertyGroup>
1414

1515
<ItemGroup>
16+
<PackageReference Include="CloudVeil.BrotliSharpLib" Version="0.3.1" />
1617
<PackageReference Include="Portable.BouncyCastle" Version="1.8.2" />
1718
<PackageReference Include="StreamExtended" Version="1.0.179" />
1819
</ItemGroup>

src/Titanium.Web.Proxy/Titanium.Web.Proxy.nuspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<dependencies>
1717
<dependency id="StreamExtended" version="1.0.179" />
1818
<dependency id="Portable.BouncyCastle" version="1.8.2" />
19+
<dependency id="BrotliSharpLib" version="0.3.1" />
1920
</dependencies>
2021
</metadata>
2122
<files>

src/Titanium.Web.Proxy/packages.config

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)