mirror of
https://github.com/szkolny-eu/szkolny-android.git
synced 2025-01-31 05:48:19 +01:00
[APIv2/Librus] Update Librus Synergia login method. Add Librus Messages login method.
This commit is contained in:
parent
a785db4d47
commit
e95d9ee514
@ -137,6 +137,25 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
get() { mSynergiaSessionIdExpiryTime = mSynergiaSessionIdExpiryTime ?: profile?.getStudentData("accountSIDTime", 0L); return mSynergiaSessionIdExpiryTime ?: 0L }
|
get() { mSynergiaSessionIdExpiryTime = mSynergiaSessionIdExpiryTime ?: profile?.getStudentData("accountSIDTime", 0L); return mSynergiaSessionIdExpiryTime ?: 0L }
|
||||||
set(value) { profile?.putStudentData("accountSIDTime", value) ?: return; mSynergiaSessionIdExpiryTime = value }
|
set(value) { profile?.putStudentData("accountSIDTime", value) ?: return; mSynergiaSessionIdExpiryTime = value }
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Messages web Session ID (DZIENNIKSID).
|
||||||
|
* Used in endpoints with Messages login method.
|
||||||
|
*/
|
||||||
|
private var mMessagesSessionId: String? = null
|
||||||
|
var messagesSessionId: String?
|
||||||
|
get() { mMessagesSessionId = mMessagesSessionId ?: profile?.getStudentData("messagesSID", null); return mMessagesSessionId }
|
||||||
|
set(value) { profile?.putStudentData("messagesSID", value) ?: return; mMessagesSessionId = value }
|
||||||
|
/**
|
||||||
|
* The expiry time for [messagesSessionId], as a UNIX timestamp.
|
||||||
|
* Used in endpoints with Messages login method.
|
||||||
|
* TODO verify how long is the session ID valid.
|
||||||
|
*/
|
||||||
|
private var mMessagesSessionIdExpiryTime: Long? = null
|
||||||
|
var messagesSessionIdExpiryTime: Long
|
||||||
|
get() { mMessagesSessionIdExpiryTime = mMessagesSessionIdExpiryTime ?: profile?.getStudentData("messagesSIDTime", 0L); return mMessagesSessionIdExpiryTime ?: 0L }
|
||||||
|
set(value) { profile?.putStudentData("messagesSIDTime", value) ?: return; mMessagesSessionIdExpiryTime = value }
|
||||||
|
|
||||||
/* ____ _ _
|
/* ____ _ _
|
||||||
/ __ \| | | |
|
/ __ \| | | |
|
||||||
| | | | |_| |__ ___ _ __
|
| | | | |_| |__ ___ _ __
|
||||||
|
@ -4,5 +4,43 @@
|
|||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.login
|
package pl.szczodrzynski.edziennik.api.v2.librus.login
|
||||||
|
|
||||||
class LoginLibrusMessages {
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.currentTimeUnix
|
||||||
|
import pl.szczodrzynski.edziennik.isNotNullNorEmpty
|
||||||
|
|
||||||
|
class LoginLibrusMessages(val data: DataLibrus, val onSuccess: () -> Unit) {
|
||||||
|
companion object {
|
||||||
|
private const val TAG = "LoginLibrusMessages"
|
||||||
|
}
|
||||||
|
|
||||||
|
init { run {
|
||||||
|
if (data.profile == null) {
|
||||||
|
data.error(TAG, ERROR_PROFILE_MISSING)
|
||||||
|
return@run
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.messagesSessionIdExpiryTime-30 > currentTimeUnix() && data.messagesSessionId.isNotNullNorEmpty()) {
|
||||||
|
onSuccess()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
when (data.loginStore.mode) {
|
||||||
|
LOGIN_MODE_LIBRUS_SYNERGIA -> loginWithCredentials()
|
||||||
|
else -> {
|
||||||
|
loginWithSynergia()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
|
||||||
|
private fun loginWithCredentials() {
|
||||||
|
if (data.apiLogin == null || data.apiPassword == null) {
|
||||||
|
if (!data.loginMethods.contains(LOGIN_METHOD_LIBRUS_SYNERGIA)) {
|
||||||
|
data.error(TAG, ERROR_LOGIN_METHOD_NOT_SATISFIED)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
data.error(TAG, ERROR_LOGIN_DATA_MISSING)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -7,7 +7,6 @@ package pl.szczodrzynski.edziennik.api.v2.librus.login
|
|||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import im.wangchao.mhttp.Request
|
import im.wangchao.mhttp.Request
|
||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
import im.wangchao.mhttp.body.MediaTypeUtils
|
|
||||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||||
import okhttp3.HttpUrl
|
import okhttp3.HttpUrl
|
||||||
@ -34,11 +33,14 @@ class LoginLibrusSynergia(val data: DataLibrus, val onSuccess: () -> Unit) {
|
|||||||
onSuccess()
|
onSuccess()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
when (data.loginStore.mode) {
|
if (data.loginMethods.contains(LOGIN_METHOD_LIBRUS_API)) {
|
||||||
LOGIN_MODE_LIBRUS_SYNERGIA -> loginWithSynergia()
|
|
||||||
else -> {
|
|
||||||
loginWithApi()
|
loginWithApi()
|
||||||
}
|
}
|
||||||
|
else if (data.apiLogin != null && data.apiPassword != null) {
|
||||||
|
loginWithCredentials()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
data.error(TAG, ERROR_LOGIN_DATA_MISSING)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
@ -46,11 +48,7 @@ class LoginLibrusSynergia(val data: DataLibrus, val onSuccess: () -> Unit) {
|
|||||||
/**
|
/**
|
||||||
* HTML form-based login method. Uses a Synergia login and password.
|
* HTML form-based login method. Uses a Synergia login and password.
|
||||||
*/
|
*/
|
||||||
private fun loginWithSynergia() {
|
private fun loginWithCredentials() {
|
||||||
if (data.apiLogin == null || data.apiPassword == null) {
|
|
||||||
data.error(TAG, ERROR_LOGIN_DATA_MISSING)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,11 +56,6 @@ class LoginLibrusSynergia(val data: DataLibrus, val onSuccess: () -> Unit) {
|
|||||||
* A login method using the Synergia API (AutoLoginToken endpoint).
|
* A login method using the Synergia API (AutoLoginToken endpoint).
|
||||||
*/
|
*/
|
||||||
private fun loginWithApi() {
|
private fun loginWithApi() {
|
||||||
if (!data.loginMethods.contains(LOGIN_METHOD_LIBRUS_API)) {
|
|
||||||
data.error(TAG, ERROR_LOGIN_METHOD_NOT_SATISFIED)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
val onSuccess = { json: JsonObject ->
|
val onSuccess = { json: JsonObject ->
|
||||||
loginWithToken(json.getString("Token"))
|
loginWithToken(json.getString("Token"))
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user