From 0920b7d3ab51914d8e4181818f800cbea6a99418 Mon Sep 17 00:00:00 2001 From: Meng Li Date: Sun, 16 Aug 2020 23:22:53 +0900 Subject: [PATCH 1/3] Replace pluto master paths --- .gitignore | 5 +++- .../mushare/demoapp/data/LoginDataSource.kt | 2 +- .../java/com/mushare/plutosdk/Pluto+Auth.kt | 6 ++--- .../java/com/mushare/plutosdk/Pluto+Login.kt | 4 +-- .../main/java/com/mushare/plutosdk/Pluto.kt | 6 ++++- .../java/com/mushare/plutosdk/PlutoService.kt | 26 +++++++++---------- 6 files changed, 26 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 29e4fdd..066e2b6 100644 --- a/.gitignore +++ b/.gitignore @@ -82,4 +82,7 @@ lint/intermediates/ lint/generated/ lint/outputs/ lint/tmp/ -# lint/reports/ \ No newline at end of file +# lint/reports/ + +# idea +.idea/ diff --git a/demoapp/src/main/java/com/mushare/demoapp/data/LoginDataSource.kt b/demoapp/src/main/java/com/mushare/demoapp/data/LoginDataSource.kt index b179a7f..d001bef 100644 --- a/demoapp/src/main/java/com/mushare/demoapp/data/LoginDataSource.kt +++ b/demoapp/src/main/java/com/mushare/demoapp/data/LoginDataSource.kt @@ -16,7 +16,7 @@ class LoginDataSource { // TODO: handle loggedInUser authentication //pluto?.registerByEmail(username, password, "Test", { //pluto?.resendValidationEmail(username, { - pluto?.loginWithEmail(username, password, { + pluto?.loginWithAccount(username, password, { pluto.myInfo({ val fakeUser = LoggedInUser(java.util.UUID.randomUUID().toString(), it.name) onComplete(Result.Success(fakeUser)) diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Auth.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Auth.kt index 4d1bd3a..0862499 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Auth.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Auth.kt @@ -1,6 +1,5 @@ package com.mushare.plutosdk -import com.mushare.plutosdk.Pluto.Companion.appId import retrofit2.Call import retrofit2.Callback import retrofit2.Response @@ -22,12 +21,11 @@ fun Pluto.getToken(completion: (String?) -> Unit, handler: Pluto.PlutoRequestHan private fun Pluto.refreshToken(completion: (String?) -> Unit, handler: Pluto.PlutoRequestHandler? = null) { val userId = data.userId val refreshToken = data.refreshToken - val deviceId = data.deviceID - if (userId == null || refreshToken == null || deviceId == null) { + if (userId == null || refreshToken == null) { completion(null) return } - plutoService.refreshAuth(RefreshAuthPostData(refreshToken, userId, deviceId, appId)).apply { + plutoService.refreshAuth(RefreshAuthPostData(refreshToken, userId)).apply { enqueue(object : Callback> { override fun onFailure( call: Call>, diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt index 22a0c7b..9dd7e8b 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt @@ -57,13 +57,13 @@ fun Pluto.resendValidationEmail(address: String, success: () -> Unit, error: ((P } } -fun Pluto.loginWithEmail(address: String, password: String, success: (() -> Unit)? = null, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) { +fun Pluto.loginWithAccount(address: String, password: String, success: (() -> Unit)? = null, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) { val deviceId = data.deviceID if (deviceId == null) { error?.invoke(PlutoError.badRequest) return } - plutoService.loginWithEmail(LoginWithEmailPostData(address, password, deviceId, appId)).apply { + plutoService.loginWithAccount(LoginWithAccountPostData(address, password, deviceId, appId)).apply { enqueue(object : Callback> { override fun onFailure(call: Call>, t: Throwable) { t.printStackTrace() diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt index 11123c8..d090d12 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt @@ -84,7 +84,11 @@ class Pluto private constructor() { fun initialize(_context: Context, _server: String, _appId: String) { context = _context.applicationContext - server = _server + if (_server.last() == '/') { + server = _server.dropLast(1) + } else { + server = _server + } appId = _appId isInitialized = true } diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt index 3a3bc67..bfa623b 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt @@ -5,40 +5,40 @@ import retrofit2.Call import retrofit2.http.* interface PlutoService { - @POST("api/auth/refresh") + @POST("/v1/token/refresh") fun refreshAuth( @Body body: RefreshAuthPostData ): Call> - @POST("api/user/register") + @POST("/v1/user/register") fun registerWithEmail( @Body body: RegisterWithEmailPostData, @Header("Accept-Language") language: String ): Call - @POST("api/user/register/verify/mail") + @POST("/v1/user/register/verify/mail") fun resendValidationEmail( @Body body: EmailPostData, @Header("Accept-Language") language: String ): Call - @POST("api/user/password/reset/mail") + @POST("/v1/user/password/reset/mail") fun resetPassword( @Body body: EmailPostData, @Header("Accept-Language") language: String ): Call - @POST("api/user/login") - fun loginWithEmail( - @Body body: LoginWithEmailPostData + @POST("/v1/user/login/account") + fun loginWithAccount( + @Body body: LoginWithAccountPostData ): Call> - @POST("api/user/login/google/mobile") + @POST("/v1/user/login/google/mobile") fun loginWithGoogle( @Body body: LoginWithGooglePostData ): Call> - @GET("api/user/info/me") + @GET("/v1/user/info") fun getAccountInfo( @HeaderMap authorizationHeader: Map ): Call> @@ -46,9 +46,7 @@ interface PlutoService { class RefreshAuthPostData( @field:SerializedName("refresh_token") var refreshToken: String, - @field:SerializedName("user_id") var userId: Int, - @field:SerializedName("device_id") var deviceId: String, - @field:SerializedName("app_id") var appId: String + @field:SerializedName("user_id") var userId: Int ) class RegisterWithEmailPostData( @@ -61,8 +59,8 @@ class EmailPostData( @field:SerializedName("mail") var mail: String ) -class LoginWithEmailPostData( - @field:SerializedName("mail") var mail: String, +class LoginWithAccountPostData( + @field:SerializedName("account") var account: String, @field:SerializedName("password") var password: String, @field:SerializedName("device_id") var deviceId: String, @field:SerializedName("app_id") var appId: String From f10fa975ddcd916c80ef8a61c21e6baa89252f02 Mon Sep 17 00:00:00 2001 From: Meng Li Date: Sun, 16 Aug 2020 23:43:16 +0900 Subject: [PATCH 2/3] Fix errors --- .../com/mushare/demoapp/ui/login/LoginActivity.kt | 6 +++++- .../com/mushare/demoapp/ui/login/LoginViewModel.kt | 2 +- .../main/java/com/mushare/plutosdk/Pluto+Login.kt | 6 ++---- .../src/main/java/com/mushare/plutosdk/Pluto.kt | 6 +----- .../main/java/com/mushare/plutosdk/PlutoModel.kt | 4 ++-- .../java/com/mushare/plutosdk/PlutoResponse.kt | 2 +- .../main/java/com/mushare/plutosdk/PlutoService.kt | 14 +++++++------- 7 files changed, 19 insertions(+), 21 deletions(-) diff --git a/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginActivity.kt b/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginActivity.kt index eb6d034..cf0ea9f 100644 --- a/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginActivity.kt +++ b/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginActivity.kt @@ -27,7 +27,11 @@ class LoginActivity : AppCompatActivity() { setContentView(R.layout.activity_login) - Pluto.initialize(this,"https://staging.easyjapanese-api-gateway.mushare.cn/pluto/","org.mushare.easyjapanese") + Pluto.initialize( + this, + "https://staging.easyjapanese-api-gateway.mushare.cn/pluto-master/", + "org.mushare.easyjapanese" + ) val username = findViewById(R.id.username) val password = findViewById(R.id.password) diff --git a/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginViewModel.kt b/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginViewModel.kt index d7ab2af..0146367 100644 --- a/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginViewModel.kt +++ b/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginViewModel.kt @@ -51,6 +51,6 @@ class LoginViewModel(private val loginRepository: LoginRepository) : ViewModel() // A placeholder password validation check private fun isPasswordValid(password: String): Boolean { - return password.length > 5 + return password.length > 2 } } diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt index 9dd7e8b..be20252 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt @@ -145,10 +145,8 @@ fun Pluto.logout() { private fun Pluto.handleLogin(response: PlutoResponseWithBody, success: (() -> Unit)?, error: ((PlutoError) -> Unit)?) { if (response.statusOK()) { val body = response.getBody() - val refreshToken = body.refreshToken - val jwt = body.jwt - data.updateRefreshToken(refreshToken) - if (!data.updateJwt(jwt)) { + data.updateRefreshToken(body.refreshToken) + if (!data.updateJwt(body.accessToken)) { error?.invoke(PlutoError.parseError) return } diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt index d090d12..11123c8 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt @@ -84,11 +84,7 @@ class Pluto private constructor() { fun initialize(_context: Context, _server: String, _appId: String) { context = _context.applicationContext - if (_server.last() == '/') { - server = _server.dropLast(1) - } else { - server = _server - } + server = _server appId = _appId isInitialized = true } diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt index be05310..f240935 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt @@ -68,8 +68,8 @@ internal class PlutoModel(context: Context) { val body = JwtUtils.decodeBody(jwt) ?: return false return try { val json = JSONObject(body) - _userId.value = json.getInt("userId") - _expire.value = json.getInt("expire_time") + _userId.value = json.getInt("sub") + _expire.value = json.getInt("exp") _jwt.value = jwt true } catch (e: Exception) { diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoResponse.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoResponse.kt index c08b979..651f7e3 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoResponse.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoResponse.kt @@ -31,7 +31,7 @@ class RefreshAuthResponse( class LoginResponse( @field:SerializedName("refresh_token") var refreshToken: String, - @field:SerializedName("jwt") var jwt: String + @field:SerializedName("access_token") var accessToken: String ) internal fun parseErrorCodeFromErrorBody(errorBody: ResponseBody?, gson: Gson): PlutoError { diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt index bfa623b..d13fbe6 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt @@ -5,40 +5,40 @@ import retrofit2.Call import retrofit2.http.* interface PlutoService { - @POST("/v1/token/refresh") + @POST("v1/token/refresh") fun refreshAuth( @Body body: RefreshAuthPostData ): Call> - @POST("/v1/user/register") + @POST("v1/user/register") fun registerWithEmail( @Body body: RegisterWithEmailPostData, @Header("Accept-Language") language: String ): Call - @POST("/v1/user/register/verify/mail") + @POST("v1/user/register/verify/mail") fun resendValidationEmail( @Body body: EmailPostData, @Header("Accept-Language") language: String ): Call - @POST("/v1/user/password/reset/mail") + @POST("v1/user/password/reset/mail") fun resetPassword( @Body body: EmailPostData, @Header("Accept-Language") language: String ): Call - @POST("/v1/user/login/account") + @POST("v1/user/login/account") fun loginWithAccount( @Body body: LoginWithAccountPostData ): Call> - @POST("/v1/user/login/google/mobile") + @POST("v1/user/login/google/mobile") fun loginWithGoogle( @Body body: LoginWithGooglePostData ): Call> - @GET("/v1/user/info") + @GET("v1/user/info") fun getAccountInfo( @HeaderMap authorizationHeader: Map ): Call> From 8f797e9453d45abb039cdad86c79dd093e212eb6 Mon Sep 17 00:00:00 2001 From: Meng Li Date: Sun, 16 Aug 2020 23:44:21 +0900 Subject: [PATCH 3/3] Bump up version to 0.2 --- build.gradle | 1 - pluto-kotlin-client-sdk/build.gradle | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 84b783e..c0f5b6b 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,6 @@ allprojects { repositories { google() jcenter() - } } diff --git a/pluto-kotlin-client-sdk/build.gradle b/pluto-kotlin-client-sdk/build.gradle index cda4e54..5cb1e4a 100644 --- a/pluto-kotlin-client-sdk/build.gradle +++ b/pluto-kotlin-client-sdk/build.gradle @@ -4,8 +4,8 @@ apply plugin: 'kotlin-android-extensions' apply plugin: 'maven-publish' buildscript { - ext.versionCode = 10 - ext.versionName = '0.1.9' + ext.versionCode = 11 + ext.versionName = '0.2' } android {