Skip to content

Commit ffb664f

Browse files
Externalized StandaloneAhcWSClient in WsApiHttpClient
1 parent cf88471 commit ffb664f

File tree

2 files changed

+9
-23
lines changed

2 files changed

+9
-23
lines changed

play-ws/src/main/scala/scommons/api/http/ws/WsApiHttpClient.scala

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,20 @@ package scommons.api.http.ws
22

33
import java.util.concurrent.TimeoutException
44

5-
import akka.actor.ActorSystem
6-
import akka.stream.{ActorMaterializer, Materializer}
75
import akka.util.ByteString
86
import play.api.libs.ws.DefaultBodyWritables._
7+
import play.api.libs.ws._
98
import play.api.libs.ws.ahc.StandaloneAhcWSClient
10-
import play.api.libs.ws.{BodyWritable, InMemoryBody, StandaloneWSRequest, StandaloneWSResponse}
119
import scommons.api.http.ApiHttpData._
1210
import scommons.api.http.{ApiHttpClient, ApiHttpData, ApiHttpResponse}
1311

1412
import scala.concurrent.duration._
1513
import scala.concurrent.{ExecutionContext, Future}
1614

17-
class WsApiHttpClient(baseUrl: String,
15+
class WsApiHttpClient(ws: StandaloneAhcWSClient,
16+
baseUrl: String,
1817
defaultTimeout: FiniteDuration = 30.seconds)
19-
(implicit system: ActorSystem)
20-
extends ApiHttpClient(baseUrl, defaultTimeout)(system.dispatcher) {
21-
22-
private implicit val ec: ExecutionContext = system.dispatcher
23-
private implicit val materializer: Materializer = ActorMaterializer()
24-
25-
private[ws] val ws = StandaloneAhcWSClient()
26-
27-
system.registerOnTermination {
28-
ws.close()
29-
}
18+
(implicit ec: ExecutionContext) extends ApiHttpClient(baseUrl, defaultTimeout) {
3019

3120
protected[ws] def execute(method: String,
3221
targetUrl: String,

play-ws/src/test/scala/scommons/api/http/ws/WsApiHttpClientSpec.scala

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import play.api.libs.ws.{EmptyBody, InMemoryBody, StandaloneWSRequest, Standalon
1717
import scommons.api.http.ApiHttpData.{StringData, UrlEncodedFormData}
1818
import scommons.api.http.{ApiHttpData, ApiHttpResponse}
1919

20-
import scala.concurrent.Future
20+
import scala.concurrent.{ExecutionContext, Future}
2121
import scala.concurrent.duration._
2222

2323
class WsApiHttpClientSpec extends FlatSpec
@@ -33,14 +33,14 @@ class WsApiHttpClientSpec extends FlatSpec
3333
)
3434

3535
private implicit val system: ActorSystem = ActorSystem(getClass.getSimpleName)
36+
private implicit val ec: ExecutionContext = system.dispatcher
3637
private implicit val materializer: ActorMaterializer = ActorMaterializer()
3738

3839
private val baseUrl = "http://test.api.client"
3940
private val response = mock[StandaloneWSResponse]
41+
private val wsClient = StandaloneAhcWSClient()
4042

41-
private class TestWsClient extends WsApiHttpClient(baseUrl) {
42-
43-
override private[ws] val ws = spy(StandaloneAhcWSClient())
43+
private class TestWsClient extends WsApiHttpClient(wsClient, baseUrl) {
4444

4545
override private[ws] def execute(req: StandaloneWSRequest): Future[StandaloneWSResponse] = {
4646
Future.successful(response)
@@ -62,11 +62,8 @@ class WsApiHttpClientSpec extends FlatSpec
6262
}
6363

6464
override protected def afterAll(): Unit = {
65-
reset(client.ws)
66-
65+
wsClient.close()
6766
system.terminate().futureValue
68-
69-
verify(client.ws).close()
7067
}
7168

7269
it should "execute request without body" in {

0 commit comments

Comments
 (0)