From 7c238b196fbddd031e32a5df7ab15e8f7e5c3d22 Mon Sep 17 00:00:00 2001 From: Grigory Pomadchin <gr.pomadchin@gmail.com> Date: Wed, 19 May 2021 23:33:28 -0400 Subject: [PATCH] Cleanup PaginationToken companion object --- .../stac4s/api/client/PaginationToken.scala | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/PaginationToken.scala b/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/PaginationToken.scala index a91c04f1..44e8c476 100644 --- a/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/PaginationToken.scala +++ b/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/PaginationToken.scala @@ -2,12 +2,11 @@ package com.azavea.stac4s.api.client import cats.syntax.either._ import eu.timepit.refined.types.numeric.PosInt -import io.circe import io.circe.generic.semiauto._ import io.circe.parser.parse import io.circe.refined._ import io.circe.syntax._ -import io.circe.{Decoder, Encoder} +import io.circe.{Decoder, Encoder, Error} import java.time.Instant import java.util.Base64 @@ -18,17 +17,17 @@ final case class PaginationToken(timestampAtLeast: Instant, serialIdGreaterThan: * https://github.com/azavea/franklin/blob/f5be8ddf48661c5bc43cbd22cb7277e961641803/application/src/main/scala/com/azavea/franklin/api/schemas/package.scala#L84-L85 */ object PaginationToken { - val b64Encoder = Base64.getEncoder - val b64Decoder = Base64.getDecoder - val defaultDecoder: Decoder[PaginationToken] = deriveDecoder val defaultEncoder: Encoder[PaginationToken] = deriveEncoder + val b64Encoder: Base64.Encoder = Base64.getEncoder + val b64Decoder: Base64.Decoder = Base64.getDecoder + def encPaginationToken(token: PaginationToken): String = b64Encoder.encodeToString( token.asJson(defaultEncoder).noSpaces.getBytes ) - def decPaginationToken(encoded: String): Either[circe.Error, PaginationToken] = { + def decPaginationTokenEither(encoded: String): Either[Error, PaginationToken] = { val jsonString = new String(b64Decoder.decode(encoded)) for { js <- parse(jsonString) @@ -36,8 +35,8 @@ object PaginationToken { } yield decoded } - implicit val dec: Decoder[PaginationToken] = - Decoder.decodeString.emap(str => decPaginationToken(str).leftMap(_.getMessage)) + implicit val paginationTokenDecoder: Decoder[PaginationToken] = + Decoder.decodeString.emap(str => decPaginationTokenEither(str).leftMap(_.getMessage)) - implicit val enc: Encoder[PaginationToken] = { encPaginationToken(_).asJson } + implicit val paginationTokenEncoder: Encoder[PaginationToken] = { encPaginationToken(_).asJson } }