Skip to content

Commit c53faec

Browse files
authored
Convert HttpRequest to Kotlin (#1386)
* Convert HttpRequest to Kotlin * Remove comment
1 parent d0d5671 commit c53faec

File tree

8 files changed

+127
-283
lines changed

8 files changed

+127
-283
lines changed

BraintreeCore/src/main/java/com/braintreepayments/api/core/BraintreeClient.kt

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -184,31 +184,29 @@ class BraintreeClient internal constructor(
184184
/**
185185
* @suppress
186186
*/
187-
fun sendGraphQLPOST(json: JSONObject?, responseCallback: HttpResponseCallback) {
187+
fun sendGraphQLPOST(json: JSONObject, responseCallback: HttpResponseCallback) {
188188
getConfiguration { configuration, configError ->
189189
if (configuration != null) {
190190
graphQLClient.post(
191-
json?.toString(),
192-
configuration,
193-
merchantRepository.authorization
191+
data = json.toString(),
192+
configuration = configuration,
193+
authorization = merchantRepository.authorization
194194
) { response, httpError ->
195195
response?.let {
196196
try {
197-
json?.optString(GraphQLConstants.Keys.QUERY)
198-
?.let { query ->
199-
val queryDiscardHolder = query.replace(Regex("^[^\\(]*"), "")
200-
val finalQuery = query.replace(queryDiscardHolder, "")
201-
val params = AnalyticsEventParams(
202-
startTime = it.timing.startTime,
203-
endTime = it.timing.endTime,
204-
endpoint = finalQuery
205-
)
206-
sendAnalyticsEvent(
207-
eventName = CoreAnalytics.API_REQUEST_LATENCY,
208-
params = params,
209-
sendImmediately = false
210-
)
211-
}
197+
val query = json.optString(GraphQLConstants.Keys.QUERY)
198+
val queryDiscardHolder = query.replace(Regex("^[^\\(]*"), "")
199+
val finalQuery = query.replace(queryDiscardHolder, "")
200+
val params = AnalyticsEventParams(
201+
startTime = it.timing.startTime,
202+
endTime = it.timing.endTime,
203+
endpoint = finalQuery
204+
)
205+
sendAnalyticsEvent(
206+
eventName = CoreAnalytics.API_REQUEST_LATENCY,
207+
params = params,
208+
sendImmediately = false
209+
)
212210
responseCallback.onResult(it.body, null)
213211
} catch (jsonException: JSONException) {
214212
responseCallback.onResult(null, jsonException)

BraintreeCore/src/main/java/com/braintreepayments/api/core/BraintreeGraphQLClient.kt

Lines changed: 1 addition & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,7 @@ internal class BraintreeGraphQLClient(
1212
) {
1313

1414
fun post(
15-
path: String?,
16-
data: String?,
17-
configuration: Configuration,
18-
authorization: Authorization,
19-
callback: NetworkResponseCallback
20-
) {
21-
if (authorization is InvalidAuthorization) {
22-
val message = authorization.errorMessage
23-
callback.onResult(null, BraintreeException(message))
24-
return
25-
}
26-
val request = HttpRequest()
27-
.method("POST")
28-
.path(path)
29-
.data(data)
30-
.baseUrl(configuration.graphQLUrl)
31-
.addHeader("User-Agent", "braintree/android/" + BuildConfig.VERSION_NAME)
32-
.addHeader("Authorization",
33-
String.format(Locale.US, "Bearer %s", authorization.bearer))
34-
.addHeader("Braintree-Version", GraphQLConstants.Headers.API_VERSION)
35-
httpClient.sendRequest(request, callback)
36-
}
37-
38-
fun post(
39-
data: String?,
15+
data: String,
4016
configuration: Configuration,
4117
authorization: Authorization,
4218
callback: NetworkResponseCallback
@@ -58,29 +34,6 @@ internal class BraintreeGraphQLClient(
5834
httpClient.sendRequest(request, callback)
5935
}
6036

61-
@Throws(Exception::class)
62-
fun post(
63-
path: String?,
64-
data: String?,
65-
configuration: Configuration,
66-
authorization: Authorization
67-
): String {
68-
if (authorization is InvalidAuthorization) {
69-
val message = authorization.errorMessage
70-
throw BraintreeException(message)
71-
}
72-
val request = HttpRequest()
73-
.method("POST")
74-
.path(path)
75-
.data(data)
76-
.baseUrl(configuration.graphQLUrl)
77-
.addHeader("User-Agent", "braintree/android/" + BuildConfig.VERSION_NAME)
78-
.addHeader("Authorization",
79-
String.format(Locale.US, "Bearer %s", authorization.bearer))
80-
.addHeader("Braintree-Version", GraphQLConstants.Headers.API_VERSION)
81-
return httpClient.sendRequest(request)
82-
}
83-
8437
companion object {
8538

8639
@Throws(SSLException::class)

BraintreeCore/src/test/java/com/braintreepayments/api/core/BraintreeGraphQLClientUnitTest.kt

Lines changed: 1 addition & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -35,28 +35,6 @@ class BraintreeGraphQLClientUnitTest {
3535
configuration = Configuration.fromJson(Fixtures.CONFIGURATION_WITH_GRAPHQL)
3636
}
3737

38-
@Test
39-
@Throws(MalformedURLException::class, URISyntaxException::class)
40-
fun post_withPathAndDataAndConfigurationAndCallback_sendsHttpRequest() {
41-
val httpRequestSlot = slot<HttpRequest>()
42-
every {
43-
httpClient.sendRequest(capture(httpRequestSlot), httpResponseCallback)
44-
} returns Unit
45-
46-
val sut = BraintreeGraphQLClient(httpClient)
47-
sut.post("sample/path", "data", configuration, authorization, httpResponseCallback)
48-
49-
val httpRequest = httpRequestSlot.captured
50-
assertEquals(URL("https://example-graphql.com/graphql/sample/path"), httpRequest.url)
51-
assertEquals("data", String(httpRequest.data, StandardCharsets.UTF_8))
52-
assertEquals("POST", httpRequest.method)
53-
54-
val headers = httpRequest.headers
55-
assertEquals("braintree/android/" + BuildConfig.VERSION_NAME, headers["User-Agent"])
56-
assertEquals("Bearer encoded_auth_fingerprint", headers["Authorization"])
57-
assertEquals("2024-08-23", headers["Braintree-Version"])
58-
}
59-
6038
@Test
6139
@Throws(MalformedURLException::class, URISyntaxException::class)
6240
fun post_withDataAndConfigurationAndCallback_sendsHttpRequest() {
@@ -70,7 +48,7 @@ class BraintreeGraphQLClientUnitTest {
7048

7149
val httpRequest = httpRequestSlot.captured
7250
assertEquals(URL("https://example-graphql.com/graphql"), httpRequest.url)
73-
assertEquals("data", String(httpRequest.data, StandardCharsets.UTF_8))
51+
assertEquals("data", String(httpRequest.data ?: ByteArray(0), StandardCharsets.UTF_8))
7452
assertEquals("POST", httpRequest.method)
7553

7654
val headers = httpRequest.headers
@@ -79,43 +57,6 @@ class BraintreeGraphQLClientUnitTest {
7957
assertEquals("2024-08-23", headers["Braintree-Version"])
8058
}
8159

82-
@Test
83-
@Throws(Exception::class)
84-
fun post_withPathAndDataAndConfiguration_sendsHttpRequest() {
85-
val httpRequestSlot = slot<HttpRequest>()
86-
every { httpClient.sendRequest(capture(httpRequestSlot)) } returns "sample response"
87-
88-
val sut = BraintreeGraphQLClient(httpClient)
89-
val result = sut.post("sample/path", "data", configuration, authorization)
90-
assertEquals("sample response", result)
91-
92-
val httpRequest = httpRequestSlot.captured
93-
assertEquals(URL("https://example-graphql.com/graphql/sample/path"), httpRequest.url)
94-
assertEquals("data", String(httpRequest.data, StandardCharsets.UTF_8))
95-
assertEquals("POST", httpRequest.method)
96-
97-
val headers = httpRequest.headers
98-
assertEquals("braintree/android/" + BuildConfig.VERSION_NAME, headers["User-Agent"])
99-
assertEquals("Bearer encoded_auth_fingerprint", headers["Authorization"])
100-
assertEquals("2024-08-23", headers["Braintree-Version"])
101-
}
102-
103-
@Test
104-
fun post_withPathAndDataAndConfigurationAndCallback_withInvalidToken_forwardsExceptionToCallback() {
105-
val authorization = InvalidAuthorization("invalid", "token invalid")
106-
107-
val exceptionSlot = slot<BraintreeException>()
108-
every {
109-
httpResponseCallback.onResult(null, capture(exceptionSlot))
110-
} returns Unit
111-
112-
val sut = BraintreeGraphQLClient(httpClient)
113-
sut.post("sample/path", "data", configuration, authorization, httpResponseCallback)
114-
115-
val exception = exceptionSlot.captured
116-
assertEquals("token invalid", exception.message)
117-
}
118-
11960
@Test
12061
fun post_withDataAndConfigurationAndCallback_withInvalidToken_forwardsExceptionToCallback() {
12162
val authorization = InvalidAuthorization("invalid", "token invalid")
@@ -131,16 +72,4 @@ class BraintreeGraphQLClientUnitTest {
13172
val exception = exceptionSlot.captured
13273
assertEquals("token invalid", exception.message)
13374
}
134-
135-
@Test
136-
@Throws(Exception::class)
137-
fun post_withPathAndDataAndConfiguration_withInvalidToken_throwsBraintreeException() {
138-
val authorization = InvalidAuthorization("invalid", "token invalid")
139-
val sut = BraintreeGraphQLClient(httpClient)
140-
try {
141-
sut.post("sample/path", "data", configuration, authorization)
142-
} catch (e: BraintreeException) {
143-
assertEquals("token invalid", e.message)
144-
}
145-
}
14675
}

BraintreeCore/src/test/java/com/braintreepayments/api/core/BraintreeHttpClientUnitTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ class BraintreeHttpClientUnitTest {
169169
assertEquals("braintree/android/" + BuildConfig.VERSION_NAME, headers["User-Agent"])
170170
assertEquals(Fixtures.TOKENIZATION_KEY, headers["Client-Key"])
171171
assertEquals("POST", httpRequest.method)
172-
assertEquals("{}", String(httpRequest.data, StandardCharsets.UTF_8))
172+
assertEquals("{}", String(httpRequest.data ?: ByteArray(0), StandardCharsets.UTF_8))
173173
}
174174

175175
@Test
@@ -203,7 +203,7 @@ class BraintreeHttpClientUnitTest {
203203
assertEquals("POST", httpRequest.method)
204204
val expectedData =
205205
"""{"authorizationFingerprint":"${clientToken.authorizationFingerprint}"}"""
206-
assertEquals(expectedData, String(httpRequest.data, StandardCharsets.UTF_8))
206+
assertEquals(expectedData, String(httpRequest.data ?: ByteArray(0), StandardCharsets.UTF_8))
207207
}
208208

209209
@Test

SharedUtils/src/main/java/com/braintreepayments/api/sharedutils/HttpRequest.java

Lines changed: 0 additions & 127 deletions
This file was deleted.

0 commit comments

Comments
 (0)