Skip to content

Commit 51f70ec

Browse files
committed
Small optimizations in proto message decoding
1 parent 163f4b6 commit 51f70ec

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

core/src/main/scala/org/ivovk/connect_rpc_scala/http/MessageCodec.scala

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import scalapb.{GeneratedMessage as Message, GeneratedMessageCompanion as Compan
1616

1717
import java.net.URLDecoder
1818
import java.util.Base64
19+
import scala.util.chaining.*
1920

2021
object MessageCodec {
2122
given [F[_] : Applicative, A <: Message](using codec: MessageCodec[F], cmp: Companion[A]): EntityDecoder[F, A] =
@@ -93,22 +94,22 @@ class ProtoMessageCodec[F[_] : Async](compressor: Compressor[F]) extends Message
9394
override def decode[A <: Message](entity: RequestEntity[F])(using cmp: Companion[A]): DecodeResult[F, A] = {
9495
val msg = entity.message match {
9596
case str: String =>
96-
Async[F].delay(base64dec.decode(str.getBytes(entity.charset.nioCharset)))
97-
.flatMap(arr => Async[F].delay(cmp.parseFrom(arr)))
97+
Async[F].delay(cmp.parseFrom(base64dec.decode(str.getBytes(entity.charset.nioCharset))))
9898
case stream: Stream[F, Byte] =>
9999
toInputStreamResource(compressor.decompressed(entity.encoding, stream))
100100
.use(is => Async[F].delay(cmp.parseFrom(is)))
101101
}
102102

103103
msg
104-
.map { message =>
105-
if (logger.isTraceEnabled) {
106-
logger.trace(s">>> Headers: ${entity.headers.redactSensitive()}")
107-
logger.trace(s">>> Proto: ${message.toProtoString}")
108-
}
109-
110-
message
111-
}
104+
.pipe(
105+
if logger.isTraceEnabled then
106+
_.map { msg =>
107+
logger.trace(s">>> Headers: ${entity.headers.redactSensitive()}")
108+
logger.trace(s">>> Proto: ${msg.toProtoString}")
109+
msg
110+
}
111+
else identity
112+
)
112113
.attemptT
113114
.leftMap(e => InvalidMessageBodyFailure(e.getMessage, e.some))
114115
}
@@ -129,7 +130,7 @@ class ProtoMessageCodec[F[_] : Async](compressor: Compressor[F]) extends Message
129130

130131
}
131132

132-
class Compressor[F[_]: Sync] {
133+
class Compressor[F[_] : Sync] {
133134

134135
given Compression[F] = Compression.forSync[F]
135136

0 commit comments

Comments
 (0)