Skip to content

Commit 2c59d1e

Browse files
committed
close the connection
1 parent 9694105 commit 2c59d1e

File tree

2 files changed

+29
-12
lines changed

2 files changed

+29
-12
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Dependencies._
22

33
name := """bitbucket-scala-client"""
44

5-
version := "1.3.2"
5+
version := "1.3.3"
66

77
scalaVersion := "2.10.5"
88

src/main/scala/com/codacy/client/bitbucket/client/BitbucketClient.scala

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,19 @@ import com.codacy.client.bitbucket.util.HTTPStatusCodes
44
import com.ning.http.client.AsyncHttpClient
55
import play.api.libs.json.{JsValue, Json, Reads}
66
import play.api.libs.oauth._
7-
import play.api.libs.ws.WSClient
87
import play.api.libs.ws.ning.NingWSClient
98

109
import scala.concurrent.Await
11-
import scala.concurrent.duration._
10+
import scala.concurrent.duration.{Duration, SECONDS}
1211

1312
class BitbucketClient(key: String, secretKey: String, token: String, secretToken: String) {
1413

1514
private lazy val KEY = ConsumerKey(key, secretKey)
1615
private lazy val TOKEN = RequestToken(token, secretToken)
1716

17+
private lazy val requestTimeout = Duration(10, SECONDS)
18+
private lazy val requestSigner = OAuthCalculator(KEY, TOKEN)
19+
1820
/*
1921
* Does an API request and parses the json output into a class
2022
*/
@@ -49,10 +51,13 @@ class BitbucketClient(key: String, secretKey: String, token: String, secretToken
4951
* Does an API post
5052
*/
5153
def post[T](request: Request[T], values: JsValue)(implicit reader: Reads[T]): RequestResponse[T] = {
52-
val client: WSClient = new NingWSClient(new AsyncHttpClient().getConfig)
54+
val client = new NingWSClient(new AsyncHttpClient().getConfig)
5355

54-
val jpromise = client.url(request.url).sign(OAuthCalculator(KEY, TOKEN)).withFollowRedirects(follow = true).post(values)
55-
val result = Await.result(jpromise, Duration(10, SECONDS))
56+
val jpromise = client.url(request.url)
57+
.sign(requestSigner)
58+
.withFollowRedirects(follow = true)
59+
.post(values)
60+
val result = Await.result(jpromise, requestTimeout)
5661

5762
val value = if (Seq(HTTPStatusCodes.OK, HTTPStatusCodes.CREATED).contains(result.status)) {
5863
val body = result.body
@@ -67,36 +72,48 @@ class BitbucketClient(key: String, secretKey: String, token: String, secretToken
6772
} else {
6873
RequestResponse[T](None, result.statusText, hasError = true)
6974
}
75+
76+
client.close()
7077
value
7178
}
7279

7380
/* copy paste from post ... */
7481
def delete[T](url: String): RequestResponse[Boolean] = {
75-
val client: WSClient = new NingWSClient(new AsyncHttpClient().getConfig)
82+
val client = new NingWSClient(new AsyncHttpClient().getConfig)
7683

77-
val jpromise = client.url(url).sign(OAuthCalculator(KEY, TOKEN)).withFollowRedirects(follow = true).delete()
78-
val result = Await.result(jpromise, Duration(10, SECONDS))
84+
val jpromise = client.url(url)
85+
.sign(requestSigner)
86+
.withFollowRedirects(follow = true)
87+
.delete()
88+
val result = Await.result(jpromise, requestTimeout)
7989

8090
val value = if (Seq(HTTPStatusCodes.OK, HTTPStatusCodes.CREATED, HTTPStatusCodes.NO_CONTENT).contains(result.status)) {
8191
RequestResponse(Option(true))
8292
} else {
8393
RequestResponse[Boolean](None, result.statusText, hasError = true)
8494
}
95+
96+
client.close()
8597
value
8698
}
8799

88100
private def get(url: String): Either[ResponseError, JsValue] = {
89-
val client: WSClient = new NingWSClient(new AsyncHttpClient().getConfig)
101+
val client = new NingWSClient(new AsyncHttpClient().getConfig)
90102

91-
val jpromise = client.url(url).sign(OAuthCalculator(KEY, TOKEN)).withFollowRedirects(follow = true).get()
92-
val result = Await.result(jpromise, Duration(10, SECONDS))
103+
val jpromise = client.url(url)
104+
.sign(requestSigner)
105+
.withFollowRedirects(follow = true)
106+
.get()
107+
val result = Await.result(jpromise, requestTimeout)
93108

94109
val value = if (Seq(HTTPStatusCodes.OK, HTTPStatusCodes.CREATED).contains(result.status)) {
95110
val body = result.body
96111
parseJson(body)
97112
} else {
98113
Left(ResponseError(java.util.UUID.randomUUID().toString, result.statusText, result.statusText))
99114
}
115+
116+
client.close()
100117
value
101118
}
102119

0 commit comments

Comments
 (0)