diff --git a/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.kt b/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.kt index 8109fc62..7941cd99 100644 --- a/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.kt +++ b/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.kt @@ -1,12 +1,11 @@ package icu.samnyan.aqua.sega.general.filter +import ext.logger import icu.samnyan.aqua.sega.util.Compression import jakarta.servlet.FilterChain import jakarta.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletResponse import org.eclipse.jetty.io.EofException -import org.slf4j.Logger -import org.slf4j.LoggerFactory import org.springframework.stereotype.Component import org.springframework.web.filter.OncePerRequestFilter @@ -16,39 +15,28 @@ import org.springframework.web.filter.OncePerRequestFilter @Component class CompressionFilter : OncePerRequestFilter() { companion object { - val logger: Logger = LoggerFactory.getLogger(CompressionFilter::class.java) + val logger = logger() } override fun doFilterInternal(req: HttpServletRequest, resp: HttpServletResponse, chain: FilterChain) { - logger.debug("Do compress filter") - val encoding = req.getHeader("content-encoding") - val reqSrc = req.inputStream.readAllBytes() - - val reqResult: ByteArray - if (encoding != null && encoding == "deflate") { - logger.debug("Request length (compressed): ${reqSrc.size}") - reqResult = Compression.decompress(reqSrc) - logger.debug("Request length (decompressed): ${reqResult.size}") - } else { - reqResult = reqSrc + val reqSrc = req.inputStream.readAllBytes().let { + if (req.getHeader("content-encoding") == "deflate") Compression.decompress(it) + else it } - val requestWrapper = CompressRequestWrapper(req, reqResult) + val requestWrapper = CompressRequestWrapper(req, reqSrc) val responseWrapper = CompressResponseWrapper(resp) chain.doFilter(requestWrapper, responseWrapper) - val respSrc = responseWrapper.toByteArray() - logger.debug("Response length (uncompressed): ${respSrc.size}") - val respResult = Compression.compress(respSrc) - logger.debug("Response length (compressed): ${respResult.size}") + val result = Compression.compress(responseWrapper.toByteArray()) - resp.setContentLength(respResult.size) + resp.setContentLength(result.size) resp.contentType = "application/json; charset=utf-8" resp.addHeader("Content-Encoding", "deflate") try { - resp.outputStream.write(respResult) + resp.outputStream.write(result) } catch (e: EofException) { logger.warn("- EOF: Client closed connection when writing result") } @@ -58,5 +46,6 @@ class CompressionFilter : OncePerRequestFilter() { * Filter games that are not diva */ override fun shouldNotFilter(req: HttpServletRequest) = - !(req.servletPath.startsWith("/g/") && !req.servletPath.startsWith("/g/diva")) + !(req.servletPath.startsWith("/g/") && !req.servletPath.startsWith("/g/diva") + && !req.servletPath.startsWith("/g/wacca")) }