mirror of
https://github.com/szkolny-eu/szkolny-android.git
synced 2025-01-31 05:48:19 +01:00
[APIv2] Update Mobidziennik API. Update Data structure.
This commit is contained in:
parent
f0bf6b8b81
commit
f7412fea7f
@ -16,6 +16,7 @@ import com.google.gson.JsonObject
|
|||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
|
||||||
import pl.szczodrzynski.navlib.R
|
import pl.szczodrzynski.navlib.R
|
||||||
import pl.szczodrzynski.navlib.crc16
|
import pl.szczodrzynski.navlib.crc16
|
||||||
import pl.szczodrzynski.navlib.getColorFromRes
|
import pl.szczodrzynski.navlib.getColorFromRes
|
||||||
@ -176,4 +177,45 @@ fun <T> List<T>.toSparseArray(key: (T) -> Long): LongSparseArray<T> {
|
|||||||
val result = LongSparseArray<T>()
|
val result = LongSparseArray<T>()
|
||||||
toSparseArray(result, key)
|
toSparseArray(result, key)
|
||||||
return result
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T> SparseArray<T>.singleOrNull(predicate: (T) -> Boolean): T? {
|
||||||
|
forEach { _, value ->
|
||||||
|
if (predicate(value))
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
fun <T> LongSparseArray<T>.singleOrNull(predicate: (T) -> Boolean): T? {
|
||||||
|
forEach { _, value ->
|
||||||
|
if (predicate(value))
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
fun String.fixWhiteSpaces() = buildString(length) {
|
||||||
|
var wasWhiteSpace = true
|
||||||
|
for (c in this@fixWhiteSpaces) {
|
||||||
|
if (c.isWhitespace()) {
|
||||||
|
if (!wasWhiteSpace) {
|
||||||
|
append(c)
|
||||||
|
wasWhiteSpace = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
append(c)
|
||||||
|
wasWhiteSpace = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.trimEnd()
|
||||||
|
|
||||||
|
fun List<Team>.getById(id: Long): Team? {
|
||||||
|
return singleOrNull { it.id == id }
|
||||||
|
}
|
||||||
|
fun LongSparseArray<Team>.getById(id: Long): Team? {
|
||||||
|
forEach { _, value ->
|
||||||
|
if (value.id == id)
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
return null
|
||||||
}
|
}
|
@ -106,6 +106,7 @@ const val ERROR_MOBIDZIENNIK_WEB_ACCESS_DENIED = 211
|
|||||||
const val ERROR_MOBIDZIENNIK_WEB_NO_SESSION_KEY = 212
|
const val ERROR_MOBIDZIENNIK_WEB_NO_SESSION_KEY = 212
|
||||||
const val ERROR_MOBIDZIENNIK_WEB_NO_SESSION_VALUE = 212
|
const val ERROR_MOBIDZIENNIK_WEB_NO_SESSION_VALUE = 212
|
||||||
const val ERROR_MOBIDZIENNIK_WEB_NO_SERVER_ID = 213
|
const val ERROR_MOBIDZIENNIK_WEB_NO_SERVER_ID = 213
|
||||||
|
const val ERROR_MOBIDZIENNIK_WEB_INVALID_RESPONSE = 214
|
||||||
|
|
||||||
const val ERROR_LOGIN_VULCAN_INVALID_SYMBOL = 301
|
const val ERROR_LOGIN_VULCAN_INVALID_SYMBOL = 301
|
||||||
const val ERROR_LOGIN_VULCAN_INVALID_TOKEN = 302
|
const val ERROR_LOGIN_VULCAN_INVALID_TOKEN = 302
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-6.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik
|
package pl.szczodrzynski.edziennik.api.v2.mobidziennik
|
||||||
|
|
||||||
|
import android.util.LongSparseArray
|
||||||
|
import android.util.SparseArray
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_MOBIDZIENNIK_WEB
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
||||||
@ -26,6 +28,9 @@ class DataMobidziennik(app: App, profile: Profile?, loginStore: LoginStore) : Da
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val teachersMap = LongSparseArray<String>()
|
||||||
|
val subjectsMap = LongSparseArray<String>()
|
||||||
|
|
||||||
private var mLoginServerName: String? = null
|
private var mLoginServerName: String? = null
|
||||||
var loginServerName: String?
|
var loginServerName: String?
|
||||||
get() { mLoginServerName = mLoginServerName ?: loginStore.getLoginData("serverName", null); return mLoginServerName }
|
get() { mLoginServerName = mLoginServerName ?: loginStore.getLoginData("serverName", null); return mLoginServerName }
|
||||||
@ -41,6 +46,11 @@ class DataMobidziennik(app: App, profile: Profile?, loginStore: LoginStore) : Da
|
|||||||
get() { mLoginPassword = mLoginPassword ?: loginStore.getLoginData("password", null); return mLoginPassword }
|
get() { mLoginPassword = mLoginPassword ?: loginStore.getLoginData("password", null); return mLoginPassword }
|
||||||
set(value) { loginStore.putLoginData("password", value); mLoginPassword = value }
|
set(value) { loginStore.putLoginData("password", value); mLoginPassword = value }
|
||||||
|
|
||||||
|
private var mStudentId: Int? = null
|
||||||
|
var studentId: Int
|
||||||
|
get() { mStudentId = mStudentId ?: profile?.getStudentData("studentId", 0); return mStudentId ?: 0 }
|
||||||
|
set(value) { profile?.putStudentData("studentId", value) ?: return; mStudentId = value }
|
||||||
|
|
||||||
/* __ __ _
|
/* __ __ _
|
||||||
\ \ / / | |
|
\ \ / / | |
|
||||||
\ \ /\ / /__| |__
|
\ \ /\ / /__| |__
|
||||||
|
@ -7,7 +7,7 @@ package pl.szczodrzynski.edziennik.api.v2.mobidziennik
|
|||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.Feature
|
import pl.szczodrzynski.edziennik.api.v2.models.Feature
|
||||||
|
|
||||||
const val ENDPOINT_MOBIDZIENNIK_API = 1000
|
const val ENDPOINT_MOBIDZIENNIK_API_MAIN = 1000
|
||||||
const val ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_INBOX = 2011
|
const val ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_INBOX = 2011
|
||||||
const val ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_SENT = 2012
|
const val ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_SENT = 2012
|
||||||
const val ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL = 2019
|
const val ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL = 2019
|
||||||
@ -21,25 +21,25 @@ const val ENDPOINT_MOBIDZIENNIK_API2 = 3000
|
|||||||
val MobidziennikFeatures = listOf(
|
val MobidziennikFeatures = listOf(
|
||||||
// timetable
|
// timetable
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_TIMETABLE, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_TIMETABLE, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
// agenda
|
// agenda
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_AGENDA, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_AGENDA, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB,
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB,
|
||||||
ENDPOINT_MOBIDZIENNIK_WEB_CALENDAR to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_WEB_CALENDAR to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB, LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB, LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
// grades
|
// grades
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_GRADES, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_GRADES, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB,
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB,
|
||||||
ENDPOINT_MOBIDZIENNIK_WEB_GRADES to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_WEB_GRADES to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB, LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB, LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
// homework
|
// homework
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_HOMEWORK, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_HOMEWORK, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
// behaviour
|
// behaviour
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_BEHAVIOUR, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_BEHAVIOUR, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB,
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB,
|
||||||
ENDPOINT_MOBIDZIENNIK_WEB_NOTICES to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_WEB_NOTICES to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB, LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB, LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
// attendance
|
// attendance
|
||||||
@ -55,31 +55,31 @@ val MobidziennikFeatures = listOf(
|
|||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
|
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_ALWAYS_NEEDED, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_ALWAYS_NEEDED, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
/*Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_STUDENT_INFO, listOf(
|
/*Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_STUDENT_INFO, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_STUDENT_NUMBER, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_STUDENT_NUMBER, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_SCHOOL_INFO, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_SCHOOL_INFO, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_CLASS_INFO, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_CLASS_INFO, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_TEAM_INFO, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_TEAM_INFO, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_TEACHERS, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_TEACHERS, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_SUBJECTS, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_SUBJECTS, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),
|
||||||
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_CLASSROOMS, listOf(
|
Feature(LOGIN_TYPE_MOBIDZIENNIK, FEATURE_CLASSROOMS, listOf(
|
||||||
ENDPOINT_MOBIDZIENNIK_API to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_API_MAIN to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),*/
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)),*/
|
||||||
|
|
||||||
// lucky number possibilities
|
// lucky number possibilities
|
||||||
|
@ -4,7 +4,9 @@
|
|||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data
|
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.R
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.*
|
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.*
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.MobidziennikApi
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils
|
import pl.szczodrzynski.edziennik.utils.Utils
|
||||||
|
|
||||||
class MobidziennikData(val data: DataMobidziennik, val onSuccess: () -> Unit) {
|
class MobidziennikData(val data: DataMobidziennik, val onSuccess: () -> Unit) {
|
||||||
@ -35,10 +37,10 @@ class MobidziennikData(val data: DataMobidziennik, val onSuccess: () -> Unit) {
|
|||||||
private fun useEndpoint(endpointId: Int, onSuccess: () -> Unit) {
|
private fun useEndpoint(endpointId: Int, onSuccess: () -> Unit) {
|
||||||
Utils.d(TAG, "Using endpoint $endpointId")
|
Utils.d(TAG, "Using endpoint $endpointId")
|
||||||
when (endpointId) {
|
when (endpointId) {
|
||||||
/*ENDPOINT_MOBIDZIENNIK_API -> {
|
ENDPOINT_MOBIDZIENNIK_API_MAIN -> {
|
||||||
data.startProgress(R.string.edziennik_progress_endpoint_data)
|
data.startProgress(R.string.edziennik_progress_endpoint_data)
|
||||||
MobidziennikApi(data) { onSuccess() }
|
MobidziennikApi(data) { onSuccess() }
|
||||||
}
|
}/*
|
||||||
ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_INBOX -> {
|
ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_INBOX -> {
|
||||||
data.startProgress(R.string.edziennik_progress_endpoint_messages_inbox)
|
data.startProgress(R.string.edziennik_progress_endpoint_messages_inbox)
|
||||||
MobidziennikWebMessagesInbox(data) { onSuccess() }
|
MobidziennikWebMessagesInbox(data) { onSuccess() }
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kuba Szczodrzyński 2019-10-6.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web
|
||||||
|
|
||||||
|
import android.util.SparseArray
|
||||||
|
import androidx.collection.SparseArrayCompat
|
||||||
|
import androidx.core.util.forEach
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_MOBIDZIENNIK_WEB_INVALID_RESPONSE
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.MobidziennikWeb
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.apidata.*
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
|
|
||||||
|
class MobidziennikApi(override val data: DataMobidziennik,
|
||||||
|
val onSuccess: () -> Unit) : MobidziennikWeb(data) {
|
||||||
|
companion object {
|
||||||
|
private const val TAG = "MobidziennikApi"
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
webGet(TAG, "/api/zrzutbazy") { text ->
|
||||||
|
if (!text.contains("T@B#LA")) {
|
||||||
|
data.error(ApiError(TAG, ERROR_MOBIDZIENNIK_WEB_INVALID_RESPONSE)
|
||||||
|
.withApiResponse(text))
|
||||||
|
return@webGet
|
||||||
|
}
|
||||||
|
|
||||||
|
val tables = text.split("T@B#LA")
|
||||||
|
tables.forEachIndexed { index, table ->
|
||||||
|
val rows = table.split("\n")
|
||||||
|
when (index) {
|
||||||
|
0 -> MobidziennikApiUsers(data, rows)
|
||||||
|
3 -> MobidziennikApiDates(data, rows)
|
||||||
|
4 -> MobidziennikApiSubjects(data, rows)
|
||||||
|
7 -> MobidziennikApiTeams(data, rows, null)
|
||||||
|
8 -> MobidziennikApiStudent(data, rows)
|
||||||
|
9 -> MobidziennikApiTeams(data, null, rows)
|
||||||
|
/*14 -> MobidziennikApiGradeCategories(data, rows)
|
||||||
|
15 -> MobidziennikApiLessons(data, rows)
|
||||||
|
16 -> MobidziennikApiAttendance(data, rows)
|
||||||
|
17 -> MobidziennikApiNotices(data, rows)
|
||||||
|
18 -> MobidziennikApiGrades(data, rows)
|
||||||
|
21 -> MobidziennikApiEvents(data, rows)
|
||||||
|
23 -> MobidziennikApiHomework(data, rows)
|
||||||
|
24 -> MobidziennikApiTimetable(data, rows)*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kuba Szczodrzyński 2019-10-6.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.apidata
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.App
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||||
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
|
|
||||||
|
class MobidziennikApiDates(val data: DataMobidziennik, rows: List<String>) {
|
||||||
|
init {
|
||||||
|
for (row in rows) {
|
||||||
|
if (row.isEmpty())
|
||||||
|
continue
|
||||||
|
val cols = row.split("|")
|
||||||
|
|
||||||
|
when (cols[1]) {
|
||||||
|
"semestr1_poczatek" -> data.profile?.dateSemester1Start = Date.fromYmd(cols[3])
|
||||||
|
"semestr2_poczatek" -> data.profile?.dateSemester2Start = Date.fromYmd(cols[3])
|
||||||
|
"koniec_roku_szkolnego" -> data.profile?.dateYearEnd = Date.fromYmd(cols[3])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kuba Szczodrzyński 2019-10-6.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.apidata
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||||
|
|
||||||
|
class MobidziennikApiStudent(val data: DataMobidziennik, rows: List<String>) {
|
||||||
|
init {
|
||||||
|
for (row in rows) {
|
||||||
|
if (row.isEmpty())
|
||||||
|
continue
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kuba Szczodrzyński 2019-10-6.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.apidata
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject
|
||||||
|
|
||||||
|
class MobidziennikApiSubjects(val data: DataMobidziennik, rows: List<String>) {
|
||||||
|
init {
|
||||||
|
for (row in rows) {
|
||||||
|
if (row.isEmpty())
|
||||||
|
continue
|
||||||
|
val cols = row.split("|")
|
||||||
|
|
||||||
|
val id = cols[0].toLong()
|
||||||
|
val longName = cols[1].trim()
|
||||||
|
val shortName = cols[2].trim()
|
||||||
|
|
||||||
|
data.subjectsMap.put(id, longName)
|
||||||
|
data.subjectList.put(id, Subject(data.profileId, id, longName, shortName))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kuba Szczodrzyński 2019-10-6.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.apidata
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.App.profileId
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
|
||||||
|
import pl.szczodrzynski.edziennik.getById
|
||||||
|
import pl.szczodrzynski.edziennik.utils.Utils.strToInt
|
||||||
|
import pl.szczodrzynski.edziennik.values
|
||||||
|
|
||||||
|
class MobidziennikApiTeams(val data: DataMobidziennik, tableTeams: List<String>?, tableRelations: List<String>?) {
|
||||||
|
init {
|
||||||
|
if (tableTeams != null) {
|
||||||
|
for (row in tableTeams) {
|
||||||
|
if (row.isEmpty())
|
||||||
|
continue
|
||||||
|
val cols = row.split("|")
|
||||||
|
|
||||||
|
val id = cols[0].toLong()
|
||||||
|
val name = cols[1]+cols[2]
|
||||||
|
val type = cols[3].toInt()
|
||||||
|
val code = data.loginServerName+":"+name
|
||||||
|
val teacherId = cols[4].toLongOrNull() ?: -1
|
||||||
|
|
||||||
|
val teamObject = Team(
|
||||||
|
profileId,
|
||||||
|
id,
|
||||||
|
name,
|
||||||
|
type,
|
||||||
|
code,
|
||||||
|
teacherId)
|
||||||
|
data.teamList.put(id, teamObject)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (tableRelations != null) {
|
||||||
|
val allTeams = data.teamList.values()
|
||||||
|
data.teamList.clear()
|
||||||
|
|
||||||
|
for (row in tableRelations) {
|
||||||
|
if (row.isEmpty())
|
||||||
|
continue
|
||||||
|
val cols = row.split("|")
|
||||||
|
|
||||||
|
val studentId = cols[1].toInt()
|
||||||
|
val teamId = cols[2].toLong()
|
||||||
|
val studentNumber = cols[4].toInt()
|
||||||
|
|
||||||
|
if (studentId != data.studentId)
|
||||||
|
continue
|
||||||
|
val team = allTeams.getById(teamId)
|
||||||
|
if (team != null) {
|
||||||
|
if (team.type == 1) {
|
||||||
|
data.profile?.studentNumber = studentNumber
|
||||||
|
data.teamClass = team
|
||||||
|
}
|
||||||
|
data.teamList.put(teamId, team)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kuba Szczodrzyński 2019-10-6.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.apidata
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||||
|
|
||||||
|
class MobidziennikApiUsers(val data: DataMobidziennik, rows: List<String>) {
|
||||||
|
init {
|
||||||
|
for (row in rows) {
|
||||||
|
if (row.isEmpty())
|
||||||
|
continue
|
||||||
|
val cols = row.split("|")
|
||||||
|
|
||||||
|
val id = cols[0].toLong()
|
||||||
|
val name = cols[4].trim()
|
||||||
|
val surname = cols[5].trim()
|
||||||
|
|
||||||
|
data.teachersMap.put(id, "$surname $name")
|
||||||
|
data.teacherList.put(id, Teacher(data.profileId, id, name, surname))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -28,6 +28,7 @@ import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
|||||||
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject
|
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
|
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
|
||||||
|
import pl.szczodrzynski.edziennik.singleOrNull
|
||||||
import pl.szczodrzynski.edziennik.toSparseArray
|
import pl.szczodrzynski.edziennik.toSparseArray
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
import pl.szczodrzynski.edziennik.values
|
import pl.szczodrzynski.edziennik.values
|
||||||
@ -96,8 +97,19 @@ open class Data(val app: App, val profile: Profile?, val loginStore: LoginStore)
|
|||||||
|
|
||||||
val teacherList = LongSparseArray<Teacher>()
|
val teacherList = LongSparseArray<Teacher>()
|
||||||
val subjectList = LongSparseArray<Subject>()
|
val subjectList = LongSparseArray<Subject>()
|
||||||
var teamList = LongSparseArray<Team>()
|
val teamList = LongSparseArray<Team>()
|
||||||
var lessonRanges = SparseArray<LessonRange>()
|
val lessonRanges = SparseArray<LessonRange>()
|
||||||
|
|
||||||
|
private var mTeamClass: Team? = null
|
||||||
|
var teamClass: Team?
|
||||||
|
get() {
|
||||||
|
if (mTeamClass == null)
|
||||||
|
mTeamClass = teamList.singleOrNull { it.type == Team.TYPE_CLASS }
|
||||||
|
return mTeamClass
|
||||||
|
}
|
||||||
|
set(value) {
|
||||||
|
mTeamClass = value
|
||||||
|
}
|
||||||
|
|
||||||
var lessonsToRemove: DataRemoveModel? = null
|
var lessonsToRemove: DataRemoveModel? = null
|
||||||
val lessonList = mutableListOf<Lesson>()
|
val lessonList = mutableListOf<Lesson>()
|
||||||
|
@ -8,6 +8,9 @@ import java.util.List;
|
|||||||
@Entity(tableName = "teams",
|
@Entity(tableName = "teams",
|
||||||
primaryKeys = {"profileId", "teamId"})
|
primaryKeys = {"profileId", "teamId"})
|
||||||
public class Team {
|
public class Team {
|
||||||
|
public static final int TYPE_CLASS = 1;
|
||||||
|
public static final int TYPE_VIRTUAL = 2;
|
||||||
|
|
||||||
public int profileId;
|
public int profileId;
|
||||||
|
|
||||||
@ColumnInfo(name = "teamId")
|
@ColumnInfo(name = "teamId")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user