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/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/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/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/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 { 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..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 @@ -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() @@ -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/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 3a3bc67..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("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