1
1
package com .codacy .client .bitbucket .client
2
2
3
+ import java .util .concurrent .{SynchronousQueue , ThreadPoolExecutor , TimeUnit }
4
+
3
5
import com .codacy .client .bitbucket .util .HTTPStatusCodes
4
6
import com .ning .http .client .AsyncHttpClientConfig
5
- import java .util .concurrent .{SynchronousQueue , ThreadPoolExecutor , TimeUnit }
6
7
import play .api .http .{ContentTypeOf , Writeable }
7
8
import play .api .libs .json .{JsValue , Json , Reads }
8
9
import play .api .libs .oauth ._
9
10
import play .api .libs .ws .ning .{NingAsyncHttpClientConfigBuilder , NingWSClient }
11
+
10
12
import scala .concurrent .Await
11
13
import scala .concurrent .duration .{Duration , SECONDS }
12
14
import scala .util .{Failure , Properties , Success , Try }
@@ -50,14 +52,13 @@ class BitbucketClient(key: String, secretKey: String, token: String, secretToken
50
52
}
51
53
52
54
/*
53
- * Does an API post
55
+ * Does an API request
54
56
*/
55
- private def post [D ,T ](request : Request [T ], values : D )(implicit reader : Reads [T ], writer : Writeable [D ], contentType : ContentTypeOf [D ]): RequestResponse [T ] = withClientRequest { client =>
56
-
57
+ private def performRequest [D , T ](method : String , request : Request [T ], values : D )(implicit reader : Reads [T ], writer : Writeable [D ], contentType : ContentTypeOf [D ]): RequestResponse [T ] = withClientRequest { client =>
57
58
val jpromise = client.url(request.url)
58
59
.sign(requestSigner)
59
60
.withFollowRedirects(follow = true )
60
- .post( values)
61
+ .withMethod(method).withBody( values).execute( )
61
62
val result = Await .result(jpromise, requestTimeout)
62
63
63
64
val value = if (Seq (HTTPStatusCodes .OK , HTTPStatusCodes .CREATED ).contains(result.status)) {
@@ -78,11 +79,19 @@ class BitbucketClient(key: String, secretKey: String, token: String, secretToken
78
79
}
79
80
80
81
def postForm [T ](request : Request [T ], values : Map [String , Seq [String ]])(implicit reader : Reads [T ]): RequestResponse [T ] = {
81
- post( request, values)
82
+ performRequest( " POST " , request, values)
82
83
}
83
84
84
85
def postJson [T ](request : Request [T ], values : JsValue )(implicit reader : Reads [T ]): RequestResponse [T ] = {
85
- post(request, values)
86
+ performRequest(" POST" , request, values)
87
+ }
88
+
89
+ def putForm [T ](request : Request [T ], values : Map [String , Seq [String ]])(implicit reader : Reads [T ]): RequestResponse [T ] = {
90
+ performRequest(" PUT" , request, values)
91
+ }
92
+
93
+ def putJson [T ](request : Request [T ], values : JsValue )(implicit reader : Reads [T ]): RequestResponse [T ] = {
94
+ performRequest(" PUT" , request, values)
86
95
}
87
96
88
97
/* copy paste from post ... */
0 commit comments