Skip to content

Commit fc70b0e

Browse files
authored
feat: adding upickle module (#6)
This PR adds a new module for upickle decoders that can be consumed via the following dependency in `build.sbt`: `"com.lumidion" %% "sonatype-central-client-upickle" % "<version_number>"`.
1 parent 94d8614 commit fc70b0e

File tree

5 files changed

+56
-27
lines changed

5 files changed

+56
-27
lines changed

build.sbt

+18-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import sbt.url
22
import scala.collection.Seq
33

4-
addCommandAlias("format", "scalafmtAll; scalafmtSbt")
4+
addCommandAlias("fmt", "scalafmtAll; scalafmtSbt")
55

66
val globals = new {
77
val projectName = "sonatype-central-client"
@@ -32,8 +32,8 @@ val versions = new {
3232
val scala213 = "2.13.13"
3333
val scala3 = "3.3.3"
3434
val sttp = "4.0.0-M16"
35-
val scalatest = "3.2.18"
36-
val zioJson = "0.7.0"
35+
val scalatest = "3.2.19"
36+
val zioJson = "0.7.1"
3737
val requests = "0.8.2"
3838
val upickle = "3.3.1"
3939
}
@@ -48,7 +48,8 @@ val commonSettings = Seq(
4848
"-deprecation"
4949
)
5050
} else Seq.empty
51-
}
51+
},
52+
publishTo := sonatypeCentralPublishToBundle.value
5253
)
5354

5455
lazy val core = (project in file("modules/core"))
@@ -61,12 +62,11 @@ lazy val requests = (project in file("modules/requests"))
6162
.settings(
6263
name := s"${globals.projectName}-requests",
6364
libraryDependencies ++= Seq(
64-
"com.lihaoyi" %% "requests" % versions.requests,
65-
"com.lihaoyi" %% "upickle" % versions.upickle
65+
"com.lihaoyi" %% "requests" % versions.requests
6666
)
6767
)
6868
.settings(commonSettings)
69-
.dependsOn(core)
69+
.dependsOn(core, upickle)
7070

7171
lazy val sttp_core = (project in file("modules/sttp-core"))
7272
.settings(
@@ -78,6 +78,16 @@ lazy val sttp_core = (project in file("modules/sttp-core"))
7878
.settings(commonSettings)
7979
.dependsOn(core)
8080

81+
lazy val upickle = (project in file("modules/upickle"))
82+
.settings(
83+
name := s"${globals.projectName}-upickle",
84+
libraryDependencies ++= Seq(
85+
"com.lihaoyi" %% "upickle" % versions.upickle
86+
)
87+
)
88+
.settings(commonSettings)
89+
.dependsOn(core)
90+
8191
lazy val zio_json = (project in file("modules/zio-json"))
8292
.settings(
8393
name := s"${globals.projectName}-zio-json",
@@ -104,4 +114,4 @@ lazy val root = (project in file("."))
104114
publish / skip := true,
105115
name := globals.projectName
106116
)
107-
.aggregate(core, requests, sttp_core, zio_json)
117+
.aggregate(core, requests, upickle, sttp_core, zio_json)

modules/requests/src/main/scala/com/lumidion/sonatype/central/client/requests/SyncSonatypeClient.scala

+1-15
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.lumidion.sonatype.central.client.core.{
44
CheckStatusResponse,
55
DeploymentId,
66
DeploymentName,
7-
DeploymentState,
87
GenericSonatypeClient,
98
PublishingType,
109
SonatypeCredentials
@@ -19,6 +18,7 @@ import com.lumidion.sonatype.central.client.core.SonatypeCentralError.{
1918
GenericUserError,
2019
InternalServerError
2120
}
21+
import com.lumidion.sonatype.central.client.upickle.decoders._
2222

2323
import java.io.File
2424
import requests.{BaseSession, MultiItem, MultiPart, Session}
@@ -31,20 +31,6 @@ class SyncSonatypeClient(
3131
connectTimeout: Int = 5000
3232
) extends GenericSonatypeClient {
3333

34-
implicit protected val deploymentIdDecoder: Reader[DeploymentId] =
35-
upickle.default.reader[ujson.Str].map(str => DeploymentId(str.value))
36-
implicit protected val deploymentNameDecoder: Reader[DeploymentName] = {
37-
upickle.default.reader[ujson.Str].map(str => DeploymentName(str.value))
38-
}
39-
implicit protected val deploymentStateDecoder: Reader[DeploymentState] =
40-
upickle.default.reader[ujson.Str].map { str =>
41-
DeploymentState
42-
.decoder(str.value)
43-
.fold(errorMessage => throw new Exception(errorMessage), identity)
44-
}
45-
implicit protected val checkStatusResponseBodyDecoder: Reader[CheckStatusResponse] =
46-
macroR[CheckStatusResponse]
47-
4834
private val authHeader = Map("Authorization" -> credentials.toAuthToken)
4935

5036
private val defaultAwaitTimeout = 120 * 1000

modules/sttp-core/src/main/scala/com/lumidion/sonatype/central/client/sttp/core/BaseSonatypeClient.scala

+7-1
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,14 @@ abstract class BaseSonatypeClient(
2929
credentials: SonatypeCredentials,
3030
loggingOptions: Option[LoggingOptions] = None
3131
) extends GenericSonatypeClient {
32+
private val finalLoggingOptions = loggingOptions.getOrElse(LoggingOptions(None, None, None, None))
3233
private val baseRequest = quickRequest
33-
.logSettings(loggingOptions)
34+
.logSettings(
35+
logRequestBody = finalLoggingOptions.logRequestBody,
36+
logResponseBody = finalLoggingOptions.logResponseBody,
37+
logRequestHeaders = finalLoggingOptions.logRequestHeaders,
38+
logResponseHeaders = finalLoggingOptions.logResponseHeaders
39+
)
3440
.headers(Map(HeaderNames.Authorization -> credentials.toAuthToken))
3541

3642
def uploadBundleRequest(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.lumidion.sonatype.central.client.upickle
2+
3+
import com.lumidion.sonatype.central.client.core.{
4+
CheckStatusResponse,
5+
DeploymentId,
6+
DeploymentName,
7+
DeploymentState
8+
}
9+
10+
import upickle.default._
11+
12+
package object decoders {
13+
implicit val deploymentIdDecoder: Reader[DeploymentId] =
14+
upickle.default.reader[ujson.Str].map(str => DeploymentId(str.value))
15+
implicit val deploymentNameDecoder: Reader[DeploymentName] = {
16+
upickle.default.reader[ujson.Str].map(str => DeploymentName(str.value))
17+
}
18+
implicit val deploymentStateDecoder: Reader[DeploymentState] =
19+
upickle.default.reader[ujson.Str].map { str =>
20+
DeploymentState
21+
.decoder(str.value)
22+
.fold(errorMessage => throw new Exception(errorMessage), identity)
23+
}
24+
implicit val checkStatusResponseBodyDecoder: Reader[CheckStatusResponse] =
25+
macroR[CheckStatusResponse]
26+
}

project/plugins.sbt

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
addSbtPlugin("org.jetbrains.scala" % "sbt-ide-settings" % "1.1.1")
2-
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")
3-
addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.12")
1+
addSbtPlugin("org.jetbrains.scala" % "sbt-ide-settings" % "1.1.1")
2+
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")
3+
addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.12")
4+
addSbtPlugin("com.lumidion" % "sbt-sonatype-central" % "0.1.0")

0 commit comments

Comments
 (0)