diff --git a/runtime/src/main/scala/org/apache/pekko/grpc/internal/Codecs.scala b/runtime/src/main/scala/org/apache/pekko/grpc/internal/Codecs.scala index 4d369184..b7cda170 100644 --- a/runtime/src/main/scala/org/apache/pekko/grpc/internal/Codecs.scala +++ b/runtime/src/main/scala/org/apache/pekko/grpc/internal/Codecs.scala @@ -25,8 +25,7 @@ import scala.util.{ Failure, Success, Try } object Codecs { // TODO should this list be made user-extensible? val supportedCodecs = immutable.Seq(Gzip, Identity) - private val supportedNames: Set[String] = supportedCodecs.map(_.name).toSet - private val supportedByName = supportedCodecs.map(c => c.name -> c).toMap + private val supportedByName: Map[String, Codec] = supportedCodecs.map(c => c.name -> c).toMap private def extractHeaders(request: jm.HttpMessage): Iterable[jm.HttpHeader] = { request match { @@ -47,16 +46,12 @@ object Codecs { def negotiate(request: jm.HttpRequest): Codec = { val headers = extractHeaders(request) val accepted = `Message-Accept-Encoding`.findIn(headers) - - if (accepted.length == 0) { + if (accepted.isEmpty) { Identity } else if (accepted.length == 1) { - supportedByName.get(accepted(0)) match { - case Some(codec) => codec - case None => Identity - } + supportedByName.getOrElse(accepted.head, Identity) } else { - accepted.collectFirst { case a if supportedNames.contains(a) => supportedByName(a) }.getOrElse(Identity) + accepted.collectFirst { case a if supportedByName.contains(a) => supportedByName(a) }.getOrElse(Identity) } }