@@ -2,6 +2,7 @@ package com.dwolla
2
2
3
3
import com.dwolla.api.* // ktlint-disable no-wildcard-imports
4
4
import com.dwolla.exception.DwollaAuthException
5
+ import com.dwolla.exception.DwollaException
5
6
import com.dwolla.http.Headers
6
7
import com.dwolla.resource.DwollaAuthError
7
8
import com.dwolla.util.Deserializer
@@ -64,27 +65,33 @@ class Dwolla(
64
65
}
65
66
66
67
internal fun fetchToken (vararg params : Pair <String , String ?>): TokenResponse {
67
- val result = fuelManager
68
- .post(environment.tokenUrl, params.filterNot { (_, v) -> v.isNullOrBlank() }.toList())
69
- .header(USER_AGENT_HEADER )
70
- .authentication()
71
- .basic(key, secret)
72
- .responseObject(Deserializer (gson, TokenResponse ::class .java))
73
- val responseHeaders = Headers (* result.second.headers.map { h -> h.key to h.value.first() }.toTypedArray())
74
- return result.third.fold(
75
- success = { res -> res },
76
- failure = {
77
- val rawBody = result.second.data.toString(Charsets .UTF_8 )
78
- if (rawBody.isBlank() && result.second.statusCode == 401 ) {
79
- // for some reason we can't read the response body when a 401 is returned
80
- val error = DwollaAuthError (" " , null , null )
81
- throw DwollaAuthException (" 401 Unauthorized" , result.second.statusCode, responseHeaders, error)
82
- } else {
83
- val error = Deserializer (gson, DwollaAuthError ::class .java).deserialize(rawBody)
84
- throw DwollaAuthException (rawBody, result.second.statusCode, responseHeaders, error)
68
+ try {
69
+ val result = fuelManager
70
+ .post(environment.tokenUrl, params.filterNot { (_, v) -> v.isNullOrBlank() }.toList())
71
+ .header(USER_AGENT_HEADER )
72
+ .authentication()
73
+ .basic(key, secret)
74
+ .responseObject(Deserializer (gson, TokenResponse ::class .java))
75
+ val responseHeaders = Headers (* result.second.headers.map { h -> h.key to h.value.first() }.toTypedArray())
76
+ return result.third.fold(
77
+ success = { res -> res },
78
+ failure = {
79
+ val rawBody = result.second.data.toString(Charsets .UTF_8 )
80
+ if (rawBody.isBlank() && result.second.statusCode == 401 ) {
81
+ // for some reason we can't read the response body when a 401 is returned
82
+ val error = DwollaAuthError (" " , null , null )
83
+ throw DwollaAuthException (" 401 Unauthorized" , result.second.statusCode, responseHeaders, error)
84
+ } else {
85
+ val error = Deserializer (gson, DwollaAuthError ::class .java).deserialize(rawBody)
86
+ throw DwollaAuthException (rawBody, result.second.statusCode, responseHeaders, error)
87
+ }
85
88
}
86
- }
87
- )
89
+ )
90
+ } catch (e: DwollaException ) {
91
+ throw e
92
+ } catch (e: Exception ) {
93
+ throw DwollaException (" See stack trace for more details..." , e)
94
+ }
88
95
}
89
96
90
97
// for testing purposes
0 commit comments