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

Brotle compression support #500

Merged
merged 7 commits into from
Oct 5, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions docs/api/Titanium.Web.Proxy.Http.KnownHeaders.html
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,30 @@ <h5 class="fieldValue">Field Value</h5>
</table>


<h4 id="Titanium_Web_Proxy_Http_KnownHeaders_ContentEncodingBrotli" data-uid="Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingBrotli">ContentEncodingBrotli</h4>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string ContentEncodingBrotli = &quot;br&quot;</code></pre>
</div>
<h5 class="fieldValue">Field Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a class="xref" href="https://docs.microsoft.com/dotnet/api/system.string">String</a></td>
<td></td>
</tr>
</tbody>
</table>


<h4 id="Titanium_Web_Proxy_Http_KnownHeaders_ContentEncodingDeflate" data-uid="Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingDeflate">ContentEncodingDeflate</h4>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
Expand Down
2 changes: 1 addition & 1 deletion docs/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
"api/Titanium.Web.Proxy.Http.KnownHeaders.html": {
"href": "api/Titanium.Web.Proxy.Http.KnownHeaders.html",
"title": "Class KnownHeaders | Titanium Web Proxy",
"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"
"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"
},
"api/Titanium.Web.Proxy.Http.Request.html": {
"href": "api/Titanium.Web.Proxy.Http.Request.html",
Expand Down
6 changes: 6 additions & 0 deletions docs/xrefmap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1281,6 +1281,12 @@ references:
commentId: F:Titanium.Web.Proxy.Http.KnownHeaders.ContentEncoding
fullName: Titanium.Web.Proxy.Http.KnownHeaders.ContentEncoding
nameWithType: KnownHeaders.ContentEncoding
- uid: Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingBrotli
name: ContentEncodingBrotli
href: api/Titanium.Web.Proxy.Http.KnownHeaders.html#Titanium_Web_Proxy_Http_KnownHeaders_ContentEncodingBrotli
commentId: F:Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingBrotli
fullName: Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingBrotli
nameWithType: KnownHeaders.ContentEncodingBrotli
- uid: Titanium.Web.Proxy.Http.KnownHeaders.ContentEncodingDeflate
name: ContentEncodingDeflate
href: api/Titanium.Web.Proxy.Http.KnownHeaders.html#Titanium_Web_Proxy_Http_KnownHeaders_ContentEncodingDeflate
Expand Down
3 changes: 3 additions & 0 deletions src/Titanium.Web.Proxy/Compression/CompressionFactory.cs
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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}");
}
Expand Down
3 changes: 3 additions & 0 deletions src/Titanium.Web.Proxy/Compression/DecompressionFactory.cs
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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}");
}
Expand Down
1 change: 1 addition & 0 deletions src/Titanium.Web.Proxy/Http/KnownHeaders.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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";

Expand Down
6 changes: 4 additions & 2 deletions src/Titanium.Web.Proxy/Shared/ProxyConstants.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using Titanium.Web.Proxy.Http;

namespace Titanium.Web.Proxy.Shared
{
Expand All @@ -25,8 +26,9 @@ internal class ProxyConstants
internal static readonly HashSet<string> ProxySupportedCompressions =
new HashSet<string>(StringComparer.OrdinalIgnoreCase)
{
"gzip",
"deflate"
KnownHeaders.ContentEncodingGzip,
KnownHeaders.ContentEncodingDeflate,
KnownHeaders.ContentEncodingBrotli
};

internal static readonly Regex CNRemoverRegex =
Expand Down
1 change: 1 addition & 0 deletions src/Titanium.Web.Proxy/Titanium.Web.Proxy.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="CloudVeil.BrotliSharpLib" Version="0.3.1" />
<PackageReference Include="Portable.BouncyCastle" Version="1.8.2" />
<PackageReference Include="StreamExtended" Version="1.0.179" />
</ItemGroup>
Expand Down
1 change: 1 addition & 0 deletions src/Titanium.Web.Proxy/Titanium.Web.Proxy.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
<dependencies>
<dependency id="StreamExtended" version="1.0.179" />
<dependency id="Portable.BouncyCastle" version="1.8.2" />
<dependency id="BrotliSharpLib" version="0.3.1" />
</dependencies>
</metadata>
<files>
Expand Down
6 changes: 0 additions & 6 deletions src/Titanium.Web.Proxy/packages.config

This file was deleted.