Skip to content

Commit 7848f69

Browse files
authored
Long imports aliases (#15)
1 parent cf7e92c commit 7848f69

File tree

1 file changed

+15
-19
lines changed

1 file changed

+15
-19
lines changed

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

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,24 @@ import org.http4s.{Charset, ContentCoding, DecodeResult, Entity, EntityDecoder,
1212
import org.ivovk.connect_rpc_scala.ConnectRpcHttpRoutes.getClass
1313
import org.slf4j.{Logger, LoggerFactory}
1414
import scalapb.json4s.{JsonFormat, Printer}
15-
import scalapb.{GeneratedMessage, GeneratedMessageCompanion}
15+
import scalapb.{GeneratedMessage as Message, GeneratedMessageCompanion as Companion}
1616

17-
trait MessageCodec[F[_]] {
17+
object MessageCodec {
18+
given [F[_] : Applicative, A <: Message](using codec: MessageCodec[F], cmp: Companion[A]): EntityDecoder[F, A] =
19+
EntityDecoder.decodeBy(MediaRange.`*/*`)(codec.decode)
1820

19-
val mediaType: MediaType
21+
given [F[_], A <: Message](using codec: MessageCodec[F]): EntityEncoder[F, A] =
22+
EntityEncoder.encodeBy(`Content-Type`(codec.mediaType))(codec.encode)
23+
}
2024

21-
def decode[A <: GeneratedMessage](m: Media[F])(using cmp: GeneratedMessageCompanion[A]): DecodeResult[F, A]
25+
trait MessageCodec[F[_]] {
2226

23-
def encode[A <: GeneratedMessage](message: A): Entity[F]
27+
val mediaType: MediaType
2428

25-
}
29+
def decode[A <: Message](m: Media[F])(using cmp: Companion[A]): DecodeResult[F, A]
2630

27-
object MessageCodec {
28-
given [F[_] : Applicative, A <: GeneratedMessage](
29-
using codec: MessageCodec[F], cmp: GeneratedMessageCompanion[A]
30-
): EntityDecoder[F, A] =
31-
EntityDecoder.decodeBy(MediaRange.`*/*`)(codec.decode)
31+
def encode[A <: Message](message: A): Entity[F]
3232

33-
given [F[_], A <: GeneratedMessage](
34-
using codec: MessageCodec[F]
35-
): EntityEncoder[F, A] =
36-
EntityEncoder.encodeBy(`Content-Type`(codec.mediaType))(codec.encode)
3733
}
3834

3935
class JsonMessageCodec[F[_] : Sync : Compression](jsonPrinter: Printer) extends MessageCodec[F] {
@@ -42,7 +38,7 @@ class JsonMessageCodec[F[_] : Sync : Compression](jsonPrinter: Printer) extends
4238

4339
override val mediaType: MediaType = MediaType.application.`json`
4440

45-
override def decode[A <: GeneratedMessage](m: Media[F])(using cmp: GeneratedMessageCompanion[A]): DecodeResult[F, A] = {
41+
override def decode[A <: Message](m: Media[F])(using cmp: Companion[A]): DecodeResult[F, A] = {
4642
val charset = m.charset.getOrElse(Charset.`UTF-8`).nioCharset
4743

4844
val f = decompressed(m)
@@ -60,7 +56,7 @@ class JsonMessageCodec[F[_] : Sync : Compression](jsonPrinter: Printer) extends
6056
EitherT.right(f)
6157
}
6258

63-
override def encode[A <: GeneratedMessage](message: A): Entity[F] = {
59+
override def encode[A <: Message](message: A): Entity[F] = {
6460
val string = jsonPrinter.print(message)
6561

6662
if (logger.isTraceEnabled) {
@@ -79,7 +75,7 @@ class ProtoMessageCodec[F[_] : Async : Compression] extends MessageCodec[F] {
7975
override val mediaType: MediaType =
8076
MediaType.unsafeParse("application/proto")
8177

82-
override def decode[A <: GeneratedMessage](m: Media[F])(using cmp: GeneratedMessageCompanion[A]): DecodeResult[F, A] = {
78+
override def decode[A <: Message](m: Media[F])(using cmp: Companion[A]): DecodeResult[F, A] = {
8379
val f = toInputStreamResource(decompressed(m)).use { is =>
8480
Async[F].delay {
8581
val message = cmp.parseFrom(is)
@@ -96,7 +92,7 @@ class ProtoMessageCodec[F[_] : Async : Compression] extends MessageCodec[F] {
9692
EitherT.right(f)
9793
}
9894

99-
override def encode[A <: GeneratedMessage](message: A): Entity[F] = {
95+
override def encode[A <: Message](message: A): Entity[F] = {
10096
if (logger.isTraceEnabled) {
10197
logger.trace(s"<<< Proto: ${message.toProtoString}")
10298
}

0 commit comments

Comments
 (0)