From bc34ba1e3a9def6afb926df2c4fa2488570070a8 Mon Sep 17 00:00:00 2001
From: Pete Slater <28756214+peteslater-ee@users.noreply.github.com>
Date: Mon, 15 Jul 2024 13:15:44 +0100
Subject: [PATCH] APIS-7198 - Upgrading HttpClient to V2 (#116)
* APIS-7198 - Upgrading HttpClient to V2
* APIS-7198 - PR Bot comments
* APIS-7198 - Removing acceptance reports config from build
---
...PushPullNotificationServiceConnector.scala | 18 +++++++++++-----
build.sbt | 3 +--
conf/application.conf | 2 +-
conf/logback.xml | 21 -------------------
project/build.properties | 2 +-
project/plugins.sbt | 2 +-
6 files changed, 17 insertions(+), 31 deletions(-)
diff --git a/app/uk/gov/hmrc/apisubscriptionfields/connector/PushPullNotificationServiceConnector.scala b/app/uk/gov/hmrc/apisubscriptionfields/connector/PushPullNotificationServiceConnector.scala
index 64788f0..fbb0926 100644
--- a/app/uk/gov/hmrc/apisubscriptionfields/connector/PushPullNotificationServiceConnector.scala
+++ b/app/uk/gov/hmrc/apisubscriptionfields/connector/PushPullNotificationServiceConnector.scala
@@ -20,9 +20,11 @@ import javax.inject.{Inject, Singleton}
import scala.concurrent.{ExecutionContext, Future}
import scala.util.control.NonFatal
+import play.api.libs.json.Json
import uk.gov.hmrc.apiplatform.modules.common.domain.models.ClientId
import uk.gov.hmrc.http.HttpReads.Implicits._
-import uk.gov.hmrc.http.{HeaderCarrier, HttpClient}
+import uk.gov.hmrc.http.client.HttpClientV2
+import uk.gov.hmrc.http.{HeaderCarrier, StringContextOps}
import uk.gov.hmrc.play.http.metrics.common._
import uk.gov.hmrc.apisubscriptionfields.config.ApplicationConfig
@@ -30,7 +32,7 @@ import uk.gov.hmrc.apisubscriptionfields.model.Types.FieldValue
import uk.gov.hmrc.apisubscriptionfields.model._
@Singleton
-class PushPullNotificationServiceConnector @Inject() (http: HttpClient, appConfig: ApplicationConfig, val apiMetrics: ApiMetrics)(implicit ec: ExecutionContext)
+class PushPullNotificationServiceConnector @Inject() (http: HttpClientV2, appConfig: ApplicationConfig, val apiMetrics: ApiMetrics)(implicit ec: ExecutionContext)
extends RecordMetrics {
import uk.gov.hmrc.apisubscriptionfields.connector.JsonFormatters._
@@ -42,7 +44,9 @@ class PushPullNotificationServiceConnector @Inject() (http: HttpClient, appConfi
val payload = CreateBoxRequest(boxName, clientId)
http
- .PUT[CreateBoxRequest, CreateBoxResponse](s"$externalServiceUri/box", payload)
+ .put(url"$externalServiceUri/box")
+ .withBody(Json.toJson(payload))
+ .execute[CreateBoxResponse]
.map(_.boxId)
.recover { case NonFatal(e) =>
throw new RuntimeException(s"Unexpected response from $externalServiceUri: ${e.getMessage}")
@@ -53,7 +57,9 @@ class PushPullNotificationServiceConnector @Inject() (http: HttpClient, appConfi
val payload = UpdateSubscriberRequest(SubscriberRequest(callbackUrl, "API_PUSH_SUBSCRIBER"))
http
- .PUT[UpdateSubscriberRequest, UpdateSubscriberResponse](s"$externalServiceUri/box/${boxId.value.toString}/subscriber", payload)
+ .put(url"$externalServiceUri/box/${boxId.value.toString}/subscriber")
+ .withBody(Json.toJson(payload))
+ .execute[UpdateSubscriberResponse]
.map(_ => ())
.recover { case NonFatal(e) =>
throw new RuntimeException(s"Unexpected response from $externalServiceUri: ${e.getMessage}")
@@ -63,7 +69,9 @@ class PushPullNotificationServiceConnector @Inject() (http: HttpClient, appConfi
def updateCallBackUrl(clientId: ClientId, boxId: BoxId, callbackUrl: FieldValue)(implicit hc: HeaderCarrier): Future[Either[String, Unit]] = {
val payload = UpdateCallBackUrlRequest(clientId, callbackUrl)
http
- .PUT[UpdateCallBackUrlRequest, UpdateCallBackUrlResponse](s"$externalServiceUri/box/${boxId.value.toString}/callback", payload)
+ .put(url"$externalServiceUri/box/${boxId.value.toString}/callback")
+ .withBody(Json.toJson(payload))
+ .execute[UpdateCallBackUrlResponse]
.map(response =>
if (response.successful)
Right(())
diff --git a/build.sbt b/build.sbt
index 3b3a1fc..d6af92f 100644
--- a/build.sbt
+++ b/build.sbt
@@ -43,8 +43,7 @@ lazy val acceptance = (project in file("acceptance"))
.settings(
name := "acceptance-tests",
Test / testOptions += Tests.Argument(TestFrameworks.ScalaTest, "-eT"),
- DefaultBuildSettings.itSettings(),
- addTestReportOption(Test, "acceptance-reports")
+ DefaultBuildSettings.itSettings()
)
commands ++= Seq(
diff --git a/conf/application.conf b/conf/application.conf
index 5a4d6db..a7cd111 100644
--- a/conf/application.conf
+++ b/conf/application.conf
@@ -25,7 +25,7 @@ play.http.errorHandler = "uk.gov.hmrc.play.bootstrap.backend.http.JsonErrorHandl
# ~~~~
# Additional play modules can be added here
play.modules.enabled += "uk.gov.hmrc.mongo.play.PlayMongoModule"
-play.modules.enabled += "uk.gov.hmrc.play.bootstrap.HttpClientModule"
+play.modules.enabled += "uk.gov.hmrc.play.bootstrap.HttpClientV2Module"
play.modules.enabled += "uk.gov.hmrc.play.http.metrics.Module"
diff --git a/conf/logback.xml b/conf/logback.xml
index 7cf8b1f..1c5f667 100644
--- a/conf/logback.xml
+++ b/conf/logback.xml
@@ -13,19 +13,6 @@
-
-
- %date{ISO8601} level=[%level] logger=[%logger] thread=[%thread] rid=[not-available] user=[not-available] message=[%message] %replace(exception=[%xException]){'^exception=\[\]$',''}%n
-
-
-
-
- logs/access.log
-
- %message%n
-
-
-
logs/connector.log
@@ -33,14 +20,6 @@
-
-
-
-
-
-
-
-
diff --git a/project/build.properties b/project/build.properties
index e8a1e24..04267b1 100644
--- a/project/build.properties
+++ b/project/build.properties
@@ -1 +1 @@
-sbt.version=1.9.7
+sbt.version=1.9.9
diff --git a/project/plugins.sbt b/project/plugins.sbt
index 9718b18..c1976fa 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -2,7 +2,7 @@ resolvers += MavenRepository("HMRC-open-artefacts-maven2", "https://open.artefac
resolvers += Resolver.url("HMRC-open-artefacts-ivy2", url("https://open.artefacts.tax.service.gov.uk/ivy2"))(Resolver.ivyStylePatterns)
resolvers += Resolver.typesafeRepo("releases")
-addSbtPlugin("uk.gov.hmrc" % "sbt-auto-build" % "3.20.0")
+addSbtPlugin("uk.gov.hmrc" % "sbt-auto-build" % "3.22.0")
addSbtPlugin("uk.gov.hmrc" % "sbt-distributables" % "2.5.0")
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.9")
addSbtPlugin("org.scalastyle" % "scalastyle-sbt-plugin" % "1.0.0")