[API/Edudziennik] Save and use semester cookie instead of currentSemester in profile.

This commit is contained in:
Kacper Ziubryniewicz 2020-01-03 23:48:50 +01:00
parent 15f126416f
commit 21fd59c196
6 changed files with 17 additions and 7 deletions

View File

@ -22,6 +22,9 @@ class DataEdudziennik(app: App, profile: Profile?, loginStore: LoginStore) : Dat
fun isWebLoginValid() = webSessionIdExpiryTime-30 > currentTimeUnix() && webSessionId.isNotNullNorEmpty() fun isWebLoginValid() = webSessionIdExpiryTime-30 > currentTimeUnix() && webSessionId.isNotNullNorEmpty()
val currentSemester: Int
get() = webSemester
override fun satisfyLoginMethods() { override fun satisfyLoginMethods() {
loginMethods.clear() loginMethods.clear()
if (isWebLoginValid()) { if (isWebLoginValid()) {
@ -65,6 +68,11 @@ class DataEdudziennik(app: App, profile: Profile?, loginStore: LoginStore) : Dat
get() { mWebSessionId = mWebSessionId ?: loginStore.getLoginData("webSessionId", null); return mWebSessionId } get() { mWebSessionId = mWebSessionId ?: loginStore.getLoginData("webSessionId", null); return mWebSessionId }
set(value) { loginStore.putLoginData("webSessionId", value); mWebSessionId = value } set(value) { loginStore.putLoginData("webSessionId", value); mWebSessionId = value }
private var mWebSemester: Int? = null
var webSemester: Int
get() { mWebSemester = mWebSemester ?: loginStore.getLoginData("webSemester", 1); return mWebSemester ?: 1 }
set(value) { loginStore.putLoginData("webSemester", value); mWebSemester = value }
private var mWebSessionIdExpiryTime: Long? = null private var mWebSessionIdExpiryTime: Long? = null
var webSessionIdExpiryTime: Long var webSessionIdExpiryTime: Long
get() { mWebSessionIdExpiryTime = mWebSessionIdExpiryTime ?: loginStore.getLoginData("webSessionIdExpiryTime", 0L); return mWebSessionIdExpiryTime ?: 0L } get() { mWebSessionIdExpiryTime = mWebSessionIdExpiryTime ?: loginStore.getLoginData("webSessionIdExpiryTime", 0L); return mWebSessionIdExpiryTime ?: 0L }

View File

@ -70,7 +70,7 @@ open class EdudziennikWeb(open val data: DataEdudziennik) {
.secure().httpOnly().build(), .secure().httpOnly().build(),
Cookie.Builder() Cookie.Builder()
.name("semester") .name("semester")
.value((profile?.currentSemester ?: 1).toString()) .value((data.webSemester).toString())
.domain("dziennikel.appspot.com") .domain("dziennikel.appspot.com")
.secure().httpOnly().build() .secure().httpOnly().build()
)) ))

View File

@ -69,7 +69,7 @@ class EdudziennikWebAttendance(override val data: DataEdudziennik,
id, id,
lesson?.displayTeacherId ?: -1, lesson?.displayTeacherId ?: -1,
lesson?.displaySubjectId ?: -1, lesson?.displaySubjectId ?: -1,
profile.currentSemester, data.currentSemester,
name, name,
date, date,
lesson?.displayStartTime ?: startTime, lesson?.displayStartTime ?: startTime,

View File

@ -107,7 +107,7 @@ class EdudziennikWebGrades(override val data: DataEdudziennik,
name, name,
value, value,
if (gradeCountToAverage) weight else 0f, if (gradeCountToAverage) weight else 0f,
profile.currentSemester, data.currentSemester,
teacher.id, teacher.id,
subject.id subject.id
).apply { ).apply {
@ -137,7 +137,7 @@ class EdudziennikWebGrades(override val data: DataEdudziennik,
proposed, proposed,
proposed.toFloatOrNull() ?: 0f, proposed.toFloatOrNull() ?: 0f,
0f, 0f,
profile.currentSemester, data.currentSemester,
-1, -1,
subject.id subject.id
).apply { ).apply {
@ -170,7 +170,7 @@ class EdudziennikWebGrades(override val data: DataEdudziennik,
final, final,
final.toFloatOrNull() ?: 0f, final.toFloatOrNull() ?: 0f,
0f, 0f,
profile.currentSemester, data.currentSemester,
-1, -1,
subject.id subject.id
).apply { ).apply {
@ -201,7 +201,7 @@ class EdudziennikWebGrades(override val data: DataEdudziennik,
TYPE_SEMESTER1_FINAL, TYPE_SEMESTER1_FINAL,
TYPE_SEMESTER2_FINAL TYPE_SEMESTER2_FINAL
).map { ).map {
DataRemoveModel.Grades.semesterWithType(profile.currentSemester, it) DataRemoveModel.Grades.semesterWithType(data.currentSemester, it)
}) })
} }

View File

@ -42,7 +42,7 @@ class EdudziennikWebNotes(override val data: DataEdudziennik,
profileId, profileId,
id, id,
description, description,
profile.currentSemester, data.currentSemester,
Notice.TYPE_NEUTRAL, Notice.TYPE_NEUTRAL,
teacher.id teacher.id
) )

View File

@ -61,6 +61,7 @@ class EdudziennikLoginWeb(val data: DataEdudziennik, val onSuccess: () -> Unit)
val cookies = data.app.cookieJar.getForDomain("dziennikel.appspot.com") val cookies = data.app.cookieJar.getForDomain("dziennikel.appspot.com")
val sessionId = cookies.firstOrNull { it.name() == "sessionid" }?.value() val sessionId = cookies.firstOrNull { it.name() == "sessionid" }?.value()
val semester = cookies.firstOrNull { it.name() == "semester" }?.value()?.toIntOrNull()
if (sessionId == null) { if (sessionId == null) {
data.error(ApiError(TAG, ERROR_LOGIN_EDUDZIENNIK_WEB_NO_SESSION_ID) data.error(ApiError(TAG, ERROR_LOGIN_EDUDZIENNIK_WEB_NO_SESSION_ID)
@ -70,6 +71,7 @@ class EdudziennikLoginWeb(val data: DataEdudziennik, val onSuccess: () -> Unit)
} }
data.webSessionId = sessionId data.webSessionId = sessionId
semester?.let { data.webSemester = it }
data.webSessionIdExpiryTime = response.getUnixDate() + 45 * 60 /* 45 min */ data.webSessionIdExpiryTime = response.getUnixDate() + 45 * 60 /* 45 min */
onSuccess() onSuccess()
} }