Skip to content

Commit 2567f7e

Browse files
committed
[0.1.8] add a handler to cancel the call
1 parent 2fc1ecb commit 2567f7e

File tree

5 files changed

+102
-109
lines changed

5 files changed

+102
-109
lines changed

pluto-kotlin-client-sdk/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ android {
1010
defaultConfig {
1111
minSdkVersion 16
1212
targetSdkVersion 29
13-
versionCode 8
14-
versionName "0.1.7"
13+
versionCode 9
14+
versionName "0.1.8"
1515

1616
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1717
consumerProguardFiles 'consumer-rules.pro'
@@ -36,7 +36,7 @@ publishing {
3636
gpr(MavenPublication) {
3737
groupId "org.mushare"
3838
artifactId "pluto-kotlin-client-sdk"
39-
version "0.1.7"
39+
version "0.1.8"
4040
artifact sourceJar
4141
artifact "$buildDir/outputs/aar/pluto-kotlin-client-sdk-release.aar"
4242

pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Auth.kt

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,34 @@ import retrofit2.Call
55
import retrofit2.Callback
66
import retrofit2.Response
77

8-
fun Pluto.getToken(completion: (String?) -> Unit): Pluto.PlutoRequestHandler {
9-
val handler = Pluto.PlutoRequestHandler()
8+
fun Pluto.getToken(completion: (String?) -> Unit, handler: Pluto.PlutoRequestHandler? = null) {
109
val jwt = data.jwt
1110
val expire = data.expire
1211
if (jwt == null || expire == null || expire - System.currentTimeMillis() / 1000 < 5 * 60) {
13-
handler.setCall(refreshToken {
12+
refreshToken({
1413
if (it == null) {
1514
data.clear()
1615
}
1716
completion(it)
18-
})
19-
return handler
17+
}, handler)
2018
}
2119
completion(data.jwt)
22-
return handler
2320
}
2421

25-
private fun Pluto.refreshToken(completion: (String?) -> Unit): Pluto.PlutoRequestHandler {
26-
val handler = Pluto.PlutoRequestHandler()
22+
private fun Pluto.refreshToken(completion: (String?) -> Unit, handler: Pluto.PlutoRequestHandler? = null) {
2723
val userId = data.userId
2824
val refreshToken = data.refreshToken
2925
val deviceId = data.deviceID
3026
if (userId == null || refreshToken == null || deviceId == null) {
3127
completion(null)
32-
return handler
28+
return
3329
}
34-
handler.setCall( plutoService.refreshAuth(RefreshAuthPostData(refreshToken, userId, deviceId, appId)).apply {
30+
plutoService.refreshAuth(RefreshAuthPostData(refreshToken, userId, deviceId, appId)).apply {
3531
enqueue(object : Callback<PlutoResponseWithBody<RefreshAuthResponse>> {
36-
override fun onFailure(call: Call<PlutoResponseWithBody<RefreshAuthResponse>>, t: Throwable) {
32+
override fun onFailure(
33+
call: Call<PlutoResponseWithBody<RefreshAuthResponse>>,
34+
t: Throwable
35+
) {
3736
t.printStackTrace()
3837
completion(null)
3938
}
@@ -52,18 +51,17 @@ private fun Pluto.refreshToken(completion: (String?) -> Unit): Pluto.PlutoReques
5251
}
5352
}
5453
})
55-
})
56-
return handler
54+
}.also {
55+
handler?.setCall(it)
56+
}
5757
}
5858

59-
fun Pluto.getAuthorizationHeader(completion: (Map<String, String>?) -> Unit): Pluto.PlutoRequestHandler {
60-
return Pluto.PlutoRequestHandler().apply {
61-
setCall(getToken {
62-
if (it == null) {
63-
completion(null)
64-
} else {
65-
completion(hashMapOf("Authorization" to "jwt $it"))
66-
}
67-
})
68-
}
59+
fun Pluto.getAuthorizationHeader(completion: (Map<String, String>?) -> Unit, handler: Pluto.PlutoRequestHandler? = null) {
60+
getToken({ token ->
61+
if (token == null) {
62+
completion(null)
63+
} else {
64+
completion(hashMapOf("Authorization" to "jwt $token"))
65+
}
66+
}, handler)
6967
}

pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt

Lines changed: 67 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -5,66 +5,65 @@ import retrofit2.Call
55
import retrofit2.Callback
66
import retrofit2.Response
77

8-
fun Pluto.registerByEmail(address: String, password: String, name: String, success: () -> Unit, error: ((PlutoError) -> Unit)? = null): Pluto.PlutoRequestHandler {
9-
return Pluto.PlutoRequestHandler().apply {
10-
setCall(plutoService.registerWithEmail(RegisterWithEmailPostData(address, password, name), getLanguage()).apply {
11-
enqueue(object : Callback<PlutoResponse> {
12-
override fun onFailure(call: Call<PlutoResponse>, t: Throwable) {
13-
t.printStackTrace()
14-
error?.invoke(PlutoError.badRequest)
15-
}
8+
fun Pluto.registerByEmail(address: String, password: String, name: String, success: () -> Unit, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) {
9+
plutoService.registerWithEmail(RegisterWithEmailPostData(address, password, name), getLanguage()).apply {
10+
enqueue(object : Callback<PlutoResponse> {
11+
override fun onFailure(call: Call<PlutoResponse>, t: Throwable) {
12+
t.printStackTrace()
13+
error?.invoke(PlutoError.badRequest)
14+
}
1615

17-
override fun onResponse(call: Call<PlutoResponse>, response: Response<PlutoResponse>) {
18-
val plutoResponse = response.body()
19-
if (plutoResponse != null) {
20-
if (plutoResponse.statusOK()) {
21-
success()
22-
} else {
23-
error?.invoke(plutoResponse.errorCode())
24-
}
16+
override fun onResponse(call: Call<PlutoResponse>, response: Response<PlutoResponse>) {
17+
val plutoResponse = response.body()
18+
if (plutoResponse != null) {
19+
if (plutoResponse.statusOK()) {
20+
success()
2521
} else {
26-
error?.invoke(parseErrorCodeFromErrorBody(response.errorBody(), gson))
22+
error?.invoke(plutoResponse.errorCode())
2723
}
24+
} else {
25+
error?.invoke(parseErrorCodeFromErrorBody(response.errorBody(), gson))
2826
}
29-
})
27+
}
3028
})
29+
}.also {
30+
handler?.setCall(it)
3131
}
3232
}
3333

34-
fun Pluto.resendValidationEmail(address: String, success: () -> Unit, error: ((PlutoError) -> Unit)? = null): Pluto.PlutoRequestHandler {
35-
return Pluto.PlutoRequestHandler().apply {
36-
setCall(plutoService.resendValidationEmail(EmailPostData(address), getLanguage()).apply {
37-
enqueue(object : Callback<PlutoResponse> {
38-
override fun onFailure(call: Call<PlutoResponse>, t: Throwable) {
39-
t.printStackTrace()
40-
error?.invoke(PlutoError.badRequest)
41-
}
34+
fun Pluto.resendValidationEmail(address: String, success: () -> Unit, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) {
35+
plutoService.resendValidationEmail(EmailPostData(address), getLanguage()).apply {
36+
enqueue(object : Callback<PlutoResponse> {
37+
override fun onFailure(call: Call<PlutoResponse>, t: Throwable) {
38+
t.printStackTrace()
39+
error?.invoke(PlutoError.badRequest)
40+
}
4241

43-
override fun onResponse(call: Call<PlutoResponse>, response: Response<PlutoResponse>) {
44-
val plutoResponse = response.body()
45-
if (plutoResponse != null) {
46-
if (plutoResponse.statusOK()) {
47-
success()
48-
} else {
49-
error?.invoke(plutoResponse.errorCode())
50-
}
42+
override fun onResponse(call: Call<PlutoResponse>, response: Response<PlutoResponse>) {
43+
val plutoResponse = response.body()
44+
if (plutoResponse != null) {
45+
if (plutoResponse.statusOK()) {
46+
success()
5147
} else {
52-
error?.invoke(parseErrorCodeFromErrorBody(response.errorBody(), gson))
48+
error?.invoke(plutoResponse.errorCode())
5349
}
50+
} else {
51+
error?.invoke(parseErrorCodeFromErrorBody(response.errorBody(), gson))
5452
}
55-
})
53+
}
5654
})
55+
}.also {
56+
handler?.setCall(it)
5757
}
5858
}
5959

60-
fun Pluto.loginWithEmail(address: String, password: String, success: (() -> Unit)? = null, error: ((PlutoError) -> Unit)? = null): Pluto.PlutoRequestHandler {
61-
val handler = Pluto.PlutoRequestHandler()
60+
fun Pluto.loginWithEmail(address: String, password: String, success: (() -> Unit)? = null, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) {
6261
val deviceId = data.deviceID
6362
if (deviceId == null) {
6463
error?.invoke(PlutoError.badRequest)
65-
return handler
64+
return
6665
}
67-
handler.setCall(plutoService.loginWithEmail(LoginWithEmailPostData(address, password, deviceId, appId)).apply {
66+
plutoService.loginWithEmail(LoginWithEmailPostData(address, password, deviceId, appId)).apply {
6867
enqueue(object : Callback<PlutoResponseWithBody<LoginResponse>> {
6968
override fun onFailure(call: Call<PlutoResponseWithBody<LoginResponse>>, t: Throwable) {
7069
t.printStackTrace()
@@ -80,18 +79,18 @@ fun Pluto.loginWithEmail(address: String, password: String, success: (() -> Unit
8079
}
8180
}
8281
})
83-
})
84-
return handler
82+
}.also {
83+
handler?.setCall(it)
84+
}
8585
}
8686

87-
fun Pluto.loginWithGoogle(idToken: String, success: (() -> Unit)? = null, error: ((PlutoError) -> Unit)? = null): Pluto.PlutoRequestHandler {
88-
val handler = Pluto.PlutoRequestHandler()
87+
fun Pluto.loginWithGoogle(idToken: String, success: (() -> Unit)? = null, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) {
8988
val deviceId = data.deviceID
9089
if (deviceId == null) {
9190
error?.invoke(PlutoError.badRequest)
92-
return handler
91+
return
9392
}
94-
handler.setCall(plutoService.loginWithGoogle(LoginWithGooglePostData(idToken, deviceId, appId)).apply {
93+
plutoService.loginWithGoogle(LoginWithGooglePostData(idToken, deviceId, appId)).apply {
9594
enqueue(object : Callback<PlutoResponseWithBody<LoginResponse>> {
9695
override fun onFailure(call: Call<PlutoResponseWithBody<LoginResponse>>, t: Throwable) {
9796
t.printStackTrace()
@@ -107,40 +106,40 @@ fun Pluto.loginWithGoogle(idToken: String, success: (() -> Unit)? = null, error:
107106
}
108107
}
109108
})
110-
})
111-
return handler
109+
}.also {
110+
handler?.setCall(it)
111+
}
112112
}
113113

114-
fun Pluto.resetPassword(address: String, success: () -> Unit, error: ((PlutoError) -> Unit)? = null): Pluto.PlutoRequestHandler {
115-
return Pluto.PlutoRequestHandler().apply {
116-
setCall(plutoService.resetPassword(EmailPostData(address), getLanguage()).apply {
117-
enqueue(object : Callback<PlutoResponse> {
118-
override fun onFailure(call: Call<PlutoResponse>, t: Throwable) {
119-
t.printStackTrace()
120-
error?.invoke(PlutoError.badRequest)
121-
}
114+
fun Pluto.resetPassword(address: String, success: () -> Unit, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) {
115+
plutoService.resetPassword(EmailPostData(address), getLanguage()).apply {
116+
enqueue(object : Callback<PlutoResponse> {
117+
override fun onFailure(call: Call<PlutoResponse>, t: Throwable) {
118+
t.printStackTrace()
119+
error?.invoke(PlutoError.badRequest)
120+
}
122121

123-
override fun onResponse(call: Call<PlutoResponse>, response: Response<PlutoResponse>) {
124-
val plutoResponse = response.body()
125-
if (plutoResponse != null) {
126-
if (plutoResponse.statusOK()) {
127-
success()
128-
} else {
129-
error?.invoke(plutoResponse.errorCode())
130-
}
122+
override fun onResponse(call: Call<PlutoResponse>, response: Response<PlutoResponse>) {
123+
val plutoResponse = response.body()
124+
if (plutoResponse != null) {
125+
if (plutoResponse.statusOK()) {
126+
success()
131127
} else {
132-
error?.invoke(parseErrorCodeFromErrorBody(response.errorBody(), gson))
128+
error?.invoke(plutoResponse.errorCode())
133129
}
130+
} else {
131+
error?.invoke(parseErrorCodeFromErrorBody(response.errorBody(), gson))
134132
}
135-
})
133+
}
136134
})
135+
}.also {
136+
handler?.setCall(it)
137137
}
138138
}
139139

140-
fun Pluto.logout(): Pluto.PlutoRequestHandler {
140+
fun Pluto.logout() {
141141
data.clear()
142142
state.postValue(Pluto.State.notSignin)
143-
return Pluto.PlutoRequestHandler()
144143
}
145144

146145
private fun Pluto.handleLogin(response: PlutoResponseWithBody<LoginResponse>, success: (() -> Unit)?, error: ((PlutoError) -> Unit)?) {

pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+User.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@ package com.mushare.plutosdk
33
import retrofit2.Call
44
import retrofit2.Callback
55
import retrofit2.Response
6-
fun Pluto.myInfo(success: (PlutoUser) -> Unit, error: ((PlutoError) -> Unit)? = null): Pluto.PlutoRequestHandler {
7-
val handler = Pluto.PlutoRequestHandler()
6+
fun Pluto.myInfo(success: (PlutoUser) -> Unit, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) {
87
data.user?.let {
98
success(it)
10-
return handler
9+
return
1110
}
12-
handler.setCall(getAuthorizationHeader { header ->
11+
getAuthorizationHeader({ header ->
1312
if (header != null) {
14-
handler.setCall(plutoService.getAccountInfo(header).apply {
13+
plutoService.getAccountInfo(header).apply {
1514
enqueue(object : Callback<PlutoResponseWithBody<PlutoUser>> {
1615
override fun onFailure(call: Call<PlutoResponseWithBody<PlutoUser>>, t: Throwable) {
1716
t.printStackTrace()
@@ -31,11 +30,12 @@ fun Pluto.myInfo(success: (PlutoUser) -> Unit, error: ((PlutoError) -> Unit)? =
3130
}
3231
}
3332
})
34-
})
33+
}.also {
34+
handler?.setCall(it)
35+
}
3536
} else {
36-
handler.setCall(null)
37+
handler?.setCall(null)
3738
error?.invoke(PlutoError.notSignin)
3839
}
39-
})
40-
return handler
40+
}, handler)
4141
}

pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ class Pluto private constructor() {
2525
this.call = call
2626
}
2727

28-
internal fun setCall(handler: PlutoRequestHandler) {
29-
this.call = handler.call
30-
}
31-
3228
fun cancel() {
3329
call?.cancel()
3430
}
@@ -64,15 +60,15 @@ class Pluto private constructor() {
6460
}
6561

6662
init {
67-
getToken {
63+
getToken({
6864
state.postValue(
6965
if (it == null) {
7066
State.notSignin
7167
} else {
7268
State.signin
7369
}
7470
)
75-
}
71+
})
7672
}
7773

7874
companion object {

0 commit comments

Comments
 (0)