From c024435713879c63d06070c0825d4d144887d602 Mon Sep 17 00:00:00 2001 From: "Frank S. Thomas" Date: Thu, 28 Dec 2023 08:43:06 +0100 Subject: [PATCH] Move `Encoder[Uri]` to `util.uri` This instance is general enough to be added to the `util.uri` object. --- .../core/forge/gitea/GiteaApiAlg.scala | 18 +++++++++--------- .../scala/org/scalasteward/core/util/uri.scala | 9 ++++++--- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/modules/core/src/main/scala/org/scalasteward/core/forge/gitea/GiteaApiAlg.scala b/modules/core/src/main/scala/org/scalasteward/core/forge/gitea/GiteaApiAlg.scala index a9b9b32a03..2364afd069 100644 --- a/modules/core/src/main/scala/org/scalasteward/core/forge/gitea/GiteaApiAlg.scala +++ b/modules/core/src/main/scala/org/scalasteward/core/forge/gitea/GiteaApiAlg.scala @@ -18,14 +18,17 @@ package org.scalasteward.core.forge.gitea import cats._ import cats.implicits._ -import org.scalasteward.core.git.Branch -import org.scalasteward.core.git.Sha1 -import org.scalasteward.core.util.HttpJsonClient +import io.circe._ +import io.circe.generic.semiauto.{deriveCodec, deriveEncoder} import org.http4s.{Request, Uri} import org.scalasteward.core.application.Config.ForgeCfg import org.scalasteward.core.data.Repo import org.scalasteward.core.forge.ForgeApiAlg import org.scalasteward.core.forge.data._ +import org.scalasteward.core.forge.gitea.GiteaApiAlg._ +import org.scalasteward.core.git.{Branch, Sha1} +import org.scalasteward.core.util.uri._ +import org.scalasteward.core.util.{intellijThisImportIsUsed, HttpJsonClient} import org.typelevel.log4cats.Logger // docs @@ -33,10 +36,6 @@ import org.typelevel.log4cats.Logger // - https://try.gitea.io/api/swagger // - https://codeberg.org/api/swagger object GiteaApiAlg { - import io.circe._ - import io.circe.generic.semiauto.deriveCodec - import org.scalasteward.core.util.uri._ - implicit val uriEncoder: Encoder[Uri] = Encoder[String].contramap[Uri](_.renderString) val DefaultLabelColor = "#e01060" @@ -44,7 +43,7 @@ object GiteaApiAlg { name: Option[String], // name of the forked repository organization: Option[String] // organization name, if forking into an organization ) - implicit val createForkOptionCodec: Encoder[CreateForkOption] = deriveCodec + implicit val createForkOptionEncoder: Encoder[CreateForkOption] = deriveEncoder case class User( login: String, @@ -116,6 +115,8 @@ object GiteaApiAlg { case class AttachLabelReq(labels: Vector[Int]) implicit val attachLabelReqCodec: Codec[AttachLabelReq] = deriveCodec + + intellijThisImportIsUsed(uriEncoder) } final class GiteaApiAlg[F[_]: HttpJsonClient]( @@ -123,7 +124,6 @@ final class GiteaApiAlg[F[_]: HttpJsonClient]( modify: Request[F] => F[Request[F]] )(implicit logger: Logger[F], F: MonadThrow[F]) extends ForgeApiAlg[F] { - import GiteaApiAlg._ def client: HttpJsonClient[F] = implicitly val url = new Url(vcs.apiHost) diff --git a/modules/core/src/main/scala/org/scalasteward/core/util/uri.scala b/modules/core/src/main/scala/org/scalasteward/core/util/uri.scala index 614d8b88d3..b21dfd3865 100644 --- a/modules/core/src/main/scala/org/scalasteward/core/util/uri.scala +++ b/modules/core/src/main/scala/org/scalasteward/core/util/uri.scala @@ -17,7 +17,7 @@ package org.scalasteward.core.util import cats.syntax.all._ -import io.circe.{Decoder, KeyDecoder, KeyEncoder} +import io.circe.{Decoder, Encoder, KeyDecoder, KeyEncoder} import monocle.Optional import org.http4s.Uri import org.http4s.Uri.{Authority, Scheme, UserInfo} @@ -26,16 +26,19 @@ object uri { implicit val uriDecoder: Decoder[Uri] = Decoder[String].emap(s => Uri.fromString(s).leftMap(_.getMessage)) + implicit val uriEncoder: Encoder[Uri] = + Encoder[String].contramap[Uri](_.renderString) + implicit val uriKeyDecoder: KeyDecoder[Uri] = KeyDecoder.instance(Uri.fromString(_).toOption) implicit val uriKeyEncoder: KeyEncoder[Uri] = KeyEncoder.instance(_.renderString) - val withAuthority: Optional[Uri, Authority] = + private val withAuthority: Optional[Uri, Authority] = Optional[Uri, Authority](_.authority)(authority => _.copy(authority = Some(authority))) - val authorityWithUserInfo: Optional[Authority, UserInfo] = + private val authorityWithUserInfo: Optional[Authority, UserInfo] = Optional[Authority, UserInfo](_.userInfo)(userInfo => _.copy(userInfo = Some(userInfo))) val withUserInfo: Optional[Uri, UserInfo] =