diff --git a/ArchiSteamFarm/IPC.cs b/ArchiSteamFarm/IPC.cs index 35650a9c4..dd6316fcd 100644 --- a/ArchiSteamFarm/IPC.cs +++ b/ArchiSteamFarm/IPC.cs @@ -36,13 +36,23 @@ namespace ArchiSteamFarm { internal static class IPC { internal static bool IsRunning => IsHandlingRequests || IsListening; + private static readonly HashSet CompressableContentTypes = new HashSet { + "application/javascript", + "text/css", + "text/html", + "text/json", + "text/plain" + }; + private static readonly Dictionary MimeTypes = new Dictionary(6) { { ".css", "text/css" }, - { ".js", "application/javascript" }, { ".html", "text/html" }, { ".ico", "image/x-icon" }, { ".jpg", "image/jpeg" }, - { ".png", "image/png" } + { ".js", "application/javascript" }, + { ".json", "text/json" }, + { ".png", "image/png" }, + { ".txt", "text/plain" } }; private static bool IsListening { @@ -595,26 +605,28 @@ namespace ArchiSteamFarm { response.AppendHeader("Access-Control-Allow-Origin", "*"); - string acceptEncoding = request.Headers["Accept-Encoding"]; + if (CompressableContentTypes.Contains(response.ContentType)) { + string acceptEncoding = request.Headers["Accept-Encoding"]; - if (!string.IsNullOrEmpty(acceptEncoding)) { - if (acceptEncoding.Contains("gzip")) { - response.AddHeader("Content-Encoding", "gzip"); - using (MemoryStream ms = new MemoryStream()) { - using (GZipStream stream = new GZipStream(ms, CompressionMode.Compress)) { - await stream.WriteAsync(content, 0, content.Length).ConfigureAwait(false); + if (!string.IsNullOrEmpty(acceptEncoding)) { + if (acceptEncoding.Contains("gzip")) { + response.AddHeader("Content-Encoding", "gzip"); + using (MemoryStream ms = new MemoryStream()) { + using (GZipStream stream = new GZipStream(ms, CompressionMode.Compress)) { + await stream.WriteAsync(content, 0, content.Length).ConfigureAwait(false); + } + + content = ms.ToArray(); } + } else if (acceptEncoding.Contains("deflate")) { + response.AddHeader("Content-Encoding", "deflate"); + using (MemoryStream ms = new MemoryStream()) { + using (DeflateStream stream = new DeflateStream(ms, CompressionMode.Compress)) { + await stream.WriteAsync(content, 0, content.Length).ConfigureAwait(false); + } - content = ms.ToArray(); - } - } else if (acceptEncoding.Contains("deflate")) { - response.AddHeader("Content-Encoding", "deflate"); - using (MemoryStream ms = new MemoryStream()) { - using (DeflateStream stream = new DeflateStream(ms, CompressionMode.Compress)) { - await stream.WriteAsync(content, 0, content.Length).ConfigureAwait(false); + content = ms.ToArray(); } - - content = ms.ToArray(); } } }