From e992ca81c36826ecbda46ca8fc6cc6d55efd2421 Mon Sep 17 00:00:00 2001 From: samnyan <205-neumphis@users.noreply.dev.s-ul.eu> Date: Sat, 1 Feb 2020 20:54:18 +0800 Subject: [PATCH] [DIVA] Enable response compression --- .../sega/chunithm/filter/ChuniResponseWrapper.java | 4 ++-- .../chunithm/handler/impl/GetGameSettingHandler.java | 2 +- .../aqua/sega/diva/filter/DivaCompressionFilter.java | 11 ++++++++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/filter/ChuniResponseWrapper.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/filter/ChuniResponseWrapper.java index 89a82cc8..e30b60b1 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/filter/ChuniResponseWrapper.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/filter/ChuniResponseWrapper.java @@ -16,7 +16,7 @@ public class ChuniResponseWrapper extends HttpServletResponseWrapper { private ServletOutputStream filterOutput; - ChuniResponseWrapper(HttpServletResponse response) { + public ChuniResponseWrapper(HttpServletResponse response) { super(response); output = new ByteArrayOutputStream(); } @@ -44,7 +44,7 @@ public class ChuniResponseWrapper extends HttpServletResponseWrapper { return filterOutput; } - byte[] toByteArray() { + public byte[] toByteArray() { return output.toByteArray(); } } diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSettingHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSettingHandler.java index 96b9801e..ab0f06ea 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSettingHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSettingHandler.java @@ -45,7 +45,7 @@ public class GetGameSettingHandler implements BaseHandler { GetGameSettingResp resp = new GetGameSettingResp( gameSetting, false, - false + true ); String json = mapper.write(resp); diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/filter/DivaCompressionFilter.java b/src/main/java/icu/samnyan/aqua/sega/diva/filter/DivaCompressionFilter.java index 442e548c..83d473a6 100644 --- a/src/main/java/icu/samnyan/aqua/sega/diva/filter/DivaCompressionFilter.java +++ b/src/main/java/icu/samnyan/aqua/sega/diva/filter/DivaCompressionFilter.java @@ -1,6 +1,7 @@ package icu.samnyan.aqua.sega.diva.filter; import icu.samnyan.aqua.sega.chunithm.filter.ChuniRequestWrapper; +import icu.samnyan.aqua.sega.chunithm.filter.ChuniResponseWrapper; import icu.samnyan.aqua.sega.util.Compression; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,9 +38,17 @@ public class DivaCompressionFilter extends OncePerRequestFilter { } ChuniRequestWrapper requestWrapper = new ChuniRequestWrapper(request, reqResult); + ChuniResponseWrapper responseWrapper = new ChuniResponseWrapper(response); - filterChain.doFilter(requestWrapper, response); + filterChain.doFilter(requestWrapper, responseWrapper); + byte[] respSrc = responseWrapper.toByteArray(); + byte[] respResult = Compression.compress(respSrc); + + response.setContentLength(respResult.length); + response.setHeader("pragma", "DFI"); + + response.getOutputStream().write(respResult); } @Override