diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8b4c79d..89688d6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,7 +5,7 @@ , - val stream: String, - val begin: LocalTime, - val end: LocalTime) +class ScheduleUnit( + val oid: Int, + val auditorium: Auditorium, + val date: LocalDate, + val discipline: Discipline, + val kindOfWork: KindOfWork, + val lecturers: ArrayList, + val stream: String, + val begin: LocalTime, + val end: LocalTime +) -class Auditorium( val name: String, - val oid: Int, - val floor: Int, - val building: Building) -class Building( val name: String, - val gid: Int, - val oid: Int) +class Auditorium( + val name: String, + val oid: Int, + val floor: Int, + val building: Building +) -class Discipline( val name: String, - val oid: Int, - val type: Int) +class Building( + val name: String, + val gid: Int, + val oid: Int +) -class KindOfWork( val name: String, - val oid: Int, - val uid: String, - val complexity: Int) +class Discipline( + val name: String, + val oid: Int, + val type: Int +) -class Lecturer( val name: String, - val rank: LecturerRank, - val email: String, - val unnId: Int, - val uid: String) +class KindOfWork( + val name: String, + val oid: Int, + val uid: String, + val complexity: Int +) -class User (val unnId: Int?, - val bitrixId: Int, - val userId: Int, - val type: Type, - val email: String, - val nameRu: String, - val nameEn: String, - val isMale: Boolean, - val birthday: LocalDate, - val avatar: ImageSet) +class Lecturer( + val name: String, + val rank: LecturerRank, + val email: String, + val unnId: Int, + val uid: String +) + +class User( + val unnId: Int?, + val bitrixId: Int, + val userId: Int, + val type: Type, + val email: String, + val nameRu: String, + val nameEn: String, + val isMale: Boolean, + val birthday: LocalDate, + val avatar: ImageSet +) class Post( val id: Int, @@ -89,18 +103,25 @@ class Post( val enableComments: Boolean, val numComments: Int, val date: LocalDateTime, - val content: String) + val content: String +) -class ImageSet(val original: String, - val thumbnail: String, - val small: String) +class ImageSet( + val original: String, + val thumbnail: String, + val small: String +) /** * Authorize user by [login] and [password] * * Also defines local vars [PHPSESSID] and [ME] */ -suspend fun auth(login: String = LoginData.login, password: String = LoginData.password, forced: Boolean = false): Boolean { +suspend fun auth( + login: String = LoginData.login, + password: String = LoginData.password, + forced: Boolean = false +): Boolean { if (!forced) { if (::PHPSESSID.isInitialized and ::ME.isInitialized) return true @@ -115,7 +136,8 @@ suspend fun auth(login: String = LoginData.login, password: String = LoginData.p } ) if (r.status.value == 302) { - PHPSESSID = """PHPSESSID=([\w\d]+)""".toRegex().find(r.headers["Set-Cookie"]!!)!!.groupValues[1] + PHPSESSID = + """PHPSESSID=([\w\d]+)""".toRegex().find(r.headers["Set-Cookie"]!!)!!.groupValues[1] getMyself(login) getCSRF() return true @@ -133,7 +155,7 @@ private suspend fun getMyself(login: String) { val user = JSONObject( client.get("$vuzapiURL/user") { - header("Cookie", "PHPSESSID=${PHPSESSID}") + header("Cookie", "PHPSESSID=$PHPSESSID") }.bodyAsText() ) @@ -141,7 +163,7 @@ private suspend fun getMyself(login: String) { unnId = studentinfo.getString("id").toInt(), bitrixId = user.getInt("bitrix_id"), userId = user.getInt("id"), - type = when(studentinfo.getString("type")) { + type = when (studentinfo.getString("type")) { "lecturer" -> Type.Lecturer // ig,,, else -> Type.Student }, @@ -229,8 +251,14 @@ suspend fun getSchedule( ), lecturers = lecturers, stream = unit.getString("stream"), - begin = LocalTime.parse(unit.getString("beginLesson"), DateTimeFormatter.ofPattern("HH:mm")), - end = LocalTime.parse(unit.getString("endLesson"), DateTimeFormatter.ofPattern("HH:mm")) + begin = LocalTime.parse( + unit.getString("beginLesson"), + DateTimeFormatter.ofPattern("HH:mm") + ), + end = LocalTime.parse( + unit.getString("endLesson"), + DateTimeFormatter.ofPattern("HH:mm") + ) ) ) } @@ -239,7 +267,7 @@ suspend fun getSchedule( suspend fun getCSRF() { val r = client.get("$restURL/log.blogpost.get") { - header("Cookie", "PHPSESSID=${PHPSESSID}") + header("Cookie", "PHPSESSID=$PHPSESSID") parameter("sessid", "") } CSRF = JSONObject(r.bodyAsText()).getString("sessid") @@ -247,7 +275,7 @@ suspend fun getCSRF() { suspend fun getBlogposts(): ArrayList { val r = client.get("$restURL/log.blogpost.get") { - header("Cookie", "PHPSESSID=${PHPSESSID}") + header("Cookie", "PHPSESSID=$PHPSESSID") parameter("sessid", CSRF) } val json = JSONObject(r.bodyAsText()) @@ -275,7 +303,7 @@ suspend fun getBlogposts(): ArrayList { suspend fun getUserByBitrixId(id: Int): User { val userId = JSONObject(client.get("$vuzapiURL/user/bx/$id") { - header("Cookie", "PHPSESSID=${PHPSESSID}") + header("Cookie", "PHPSESSID=$PHPSESSID") }.bodyAsText()).getInt("id") return getUser(userId) } @@ -283,7 +311,7 @@ suspend fun getUserByBitrixId(id: Int): User { suspend fun getUser(id: Int): User { val json = JSONObject( client.get("$vuzapiURL/user/$id") { - header("Cookie", "PHPSESSID=${PHPSESSID}") + header("Cookie", "PHPSESSID=$PHPSESSID") }.bodyAsText() ) diff --git a/app/src/main/java/ru/sweetbread/unn/ui/UNNApp.kt b/app/src/main/java/ru/sweetbread/unn/UNNApp.kt similarity index 91% rename from app/src/main/java/ru/sweetbread/unn/ui/UNNApp.kt rename to app/src/main/java/ru/sweetbread/unn/UNNApp.kt index 1f3c6f7..b5b20e6 100644 --- a/app/src/main/java/ru/sweetbread/unn/ui/UNNApp.kt +++ b/app/src/main/java/ru/sweetbread/unn/UNNApp.kt @@ -1,4 +1,4 @@ -package ru.sweetbread.unn.ui +package ru.sweetbread.unn import android.app.Application import android.content.Context @@ -6,7 +6,6 @@ import org.acra.config.httpSender import org.acra.data.StringFormat import org.acra.ktx.initAcra import org.acra.sender.HttpSender -import ru.sweetbread.unn.BuildConfig class UNNApp : Application() { override fun attachBaseContext(base: Context) { diff --git a/app/src/main/java/ru/sweetbread/unn/ui/composes/Blogpost.kt b/app/src/main/java/ru/sweetbread/unn/ui/composes/Blogpost.kt index b38aa37..82e7d3e 100644 --- a/app/src/main/java/ru/sweetbread/unn/ui/composes/Blogpost.kt +++ b/app/src/main/java/ru/sweetbread/unn/ui/composes/Blogpost.kt @@ -47,14 +47,14 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import org.kefirsf.bb.BBProcessorFactory import org.kefirsf.bb.TextProcessor +import ru.sweetbread.unn.ImageSet +import ru.sweetbread.unn.Post import ru.sweetbread.unn.R -import ru.sweetbread.unn.ui.ImageSet -import ru.sweetbread.unn.ui.Post -import ru.sweetbread.unn.ui.Type -import ru.sweetbread.unn.ui.User -import ru.sweetbread.unn.ui.getBlogposts -import ru.sweetbread.unn.ui.getUserByBitrixId -import ru.sweetbread.unn.ui.portalURL +import ru.sweetbread.unn.Type +import ru.sweetbread.unn.User +import ru.sweetbread.unn.getBlogposts +import ru.sweetbread.unn.getUserByBitrixId +import ru.sweetbread.unn.portalURL import ru.sweetbread.unn.ui.theme.UNNTheme import java.time.LocalDate import java.time.LocalDateTime diff --git a/app/src/main/java/ru/sweetbread/unn/ui/composes/Schedule.kt b/app/src/main/java/ru/sweetbread/unn/ui/composes/Schedule.kt index 5a9b65b..07f3f02 100644 --- a/app/src/main/java/ru/sweetbread/unn/ui/composes/Schedule.kt +++ b/app/src/main/java/ru/sweetbread/unn/ui/composes/Schedule.kt @@ -41,15 +41,15 @@ import com.kizitonwose.calendar.compose.WeekCalendar import com.kizitonwose.calendar.compose.weekcalendar.rememberWeekCalendarState import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import ru.sweetbread.unn.Auditorium +import ru.sweetbread.unn.Building +import ru.sweetbread.unn.Discipline +import ru.sweetbread.unn.KindOfWork +import ru.sweetbread.unn.Lecturer +import ru.sweetbread.unn.LecturerRank import ru.sweetbread.unn.R -import ru.sweetbread.unn.ui.Auditorium -import ru.sweetbread.unn.ui.Building -import ru.sweetbread.unn.ui.Discipline -import ru.sweetbread.unn.ui.KindOfWork -import ru.sweetbread.unn.ui.Lecturer -import ru.sweetbread.unn.ui.LecturerRank -import ru.sweetbread.unn.ui.ScheduleUnit -import ru.sweetbread.unn.ui.getSchedule +import ru.sweetbread.unn.ScheduleUnit +import ru.sweetbread.unn.getSchedule import ru.sweetbread.unn.ui.theme.UNNTheme import java.time.DayOfWeek import java.time.LocalDate diff --git a/app/src/main/java/ru/sweetbread/unn/ui/layout/LoginActivity.kt b/app/src/main/java/ru/sweetbread/unn/ui/layout/LoginActivity.kt index bc4595e..b5bbb41 100644 --- a/app/src/main/java/ru/sweetbread/unn/ui/layout/LoginActivity.kt +++ b/app/src/main/java/ru/sweetbread/unn/ui/layout/LoginActivity.kt @@ -38,7 +38,7 @@ import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import ru.sweetbread.unn.R -import ru.sweetbread.unn.ui.auth +import ru.sweetbread.unn.auth import ru.sweetbread.unn.ui.theme.UNNTheme import splitties.activities.start import splitties.preferences.Preferences