From 7ccdfbb29f5c06a623492deb609a878daa761f63 Mon Sep 17 00:00:00 2001 From: Jules Ivanic Date: Sat, 1 Feb 2025 08:33:54 +1100 Subject: [PATCH] Update Netty to latest version, `4.1.117.Final` (#3279) --- project/Dependencies.scala | 2 +- .../zio/http/netty/model/Conversions.scala | 15 ++++------ .../test/scala/zio/http/ClientHttpsSpec.scala | 29 ++++++++++++------- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index bcc954795d..04b82cecae 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -2,7 +2,7 @@ import sbt.* object Dependencies { val JwtCoreVersion = "10.0.1" - val NettyVersion = "4.1.116.Final" + val NettyVersion = "4.1.117.Final" val NettyIncubatorVersion = "0.0.25.Final" val ScalaCompactCollectionVersion = "2.12.0" val ZioVersion = "2.1.11" diff --git a/zio-http/jvm/src/main/scala/zio/http/netty/model/Conversions.scala b/zio-http/jvm/src/main/scala/zio/http/netty/model/Conversions.scala index 374c9ba27f..6a35cc21ec 100644 --- a/zio-http/jvm/src/main/scala/zio/http/netty/model/Conversions.scala +++ b/zio-http/jvm/src/main/scala/zio/http/netty/model/Conversions.scala @@ -21,8 +21,7 @@ import scala.collection.AbstractIterator import zio.http.Server.Config.CompressionOptions import zio.http._ -import com.aayushatharva.brotli4j.encoder.Encoder -import io.netty.handler.codec.compression.StandardCompressionOptions +import io.netty.handler.codec.compression.{BrotliMode, StandardCompressionOptions} import io.netty.handler.codec.http._ import io.netty.handler.codec.http.websocketx.WebSocketScheme @@ -150,15 +149,13 @@ private[netty] object Conversions { case CompressionOptions.Deflate(cfg) => StandardCompressionOptions.deflate(cfg.level, cfg.bits, cfg.mem) case CompressionOptions.Brotli(cfg) => - StandardCompressionOptions.brotli( - new Encoder.Parameters().setQuality(cfg.quality).setWindow(cfg.lgwin).setMode(brotliModeToJava(cfg.mode)), - ) + StandardCompressionOptions.brotli(cfg.quality, cfg.lgwin, brotliModeToJava(cfg.mode)) } - def brotliModeToJava(brotli: CompressionOptions.Mode): Encoder.Mode = brotli match { - case CompressionOptions.Mode.Font => Encoder.Mode.FONT - case CompressionOptions.Mode.Text => Encoder.Mode.TEXT - case CompressionOptions.Mode.Generic => Encoder.Mode.GENERIC + def brotliModeToJava(brotli: CompressionOptions.Mode): BrotliMode = brotli match { + case CompressionOptions.Mode.Font => BrotliMode.FONT + case CompressionOptions.Mode.Text => BrotliMode.TEXT + case CompressionOptions.Mode.Generic => BrotliMode.GENERIC } def versionToNetty(version: Version): HttpVersion = version match { diff --git a/zio-http/jvm/src/test/scala/zio/http/ClientHttpsSpec.scala b/zio-http/jvm/src/test/scala/zio/http/ClientHttpsSpec.scala index 3e466bb4d5..77eeafa3e2 100644 --- a/zio-http/jvm/src/test/scala/zio/http/ClientHttpsSpec.scala +++ b/zio-http/jvm/src/test/scala/zio/http/ClientHttpsSpec.scala @@ -18,19 +18,18 @@ package zio.http import zio._ import zio.test.Assertion._ -import zio.test.TestAspect.{flaky, ignore, nonFlaky} -import zio.test.{TestAspect, assertZIO} +import zio.test.TestAspect.{ignore, nonFlaky} +import zio.test.{Spec, TestAspect, TestEnvironment, assertZIO} import zio.http.netty.NettyConfig import zio.http.netty.client.NettyClientDriver abstract class ClientHttpsSpecBase extends ZIOHttpSpec { - val sslConfig: ClientSSLConfig - val zioDev = + private val zioDev = URL.decode("https://zio.dev").toOption.get - val badRequest = + private val badRequest = URL .decode( "https://httpbin.org/status/400", @@ -38,10 +37,10 @@ abstract class ClientHttpsSpecBase extends ZIOHttpSpec { .toOption .get - val untrusted = + private val untrusted = URL.decode("https://untrusted-root.badssl.com/").toOption.get - override def spec = suite("Https Client request")( + def tests(sslConfig: ClientSSLConfig) = suite("Client")( test("respond Ok") { val actual = Client.batched(Request.get(zioDev)) assertZIO(actual)(anything) @@ -74,7 +73,7 @@ abstract class ClientHttpsSpecBase extends ZIOHttpSpec { ), ), ) - } @@ nonFlaky(20), + }, ) .provideShared( ZLayer.succeed(ZClient.Config.default.ssl(sslConfig)), @@ -91,17 +90,27 @@ abstract class ClientHttpsSpecBase extends ZIOHttpSpec { object ClientHttpsSpec extends ClientHttpsSpecBase { - val sslConfig = ClientSSLConfig.FromTrustStoreResource( + private val sslConfig = ClientSSLConfig.FromTrustStoreResource( trustStorePath = "truststore.jks", trustStorePassword = "changeit", ) + + override def spec: Spec[TestEnvironment & Scope, Throwable] = + suite("Https Client request - From Trust Store")( + tests(sslConfig), + ) } object ClientHttpsFromJavaxNetSslSpec extends ClientHttpsSpecBase { - val sslConfig = + private val sslConfig = ClientSSLConfig.FromJavaxNetSsl .builderWithTrustManagerResource("trustStore.jks") .trustManagerPassword("changeit") .build() + + override def spec: Spec[TestEnvironment & Scope, Throwable] = + suite("Https Client request - From Javax Net Ssl")( + tests(sslConfig), + ) }