Remove API.kt and UNNApp.kt from .ui

This commit is contained in:
sweetbread 2024-03-26 19:51:29 +03:00
parent a417d74154
commit da7498bf02
6 changed files with 100 additions and 73 deletions

View File

@ -5,7 +5,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".ui.UNNApp"
android:name=".UNNApp"
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"

View File

@ -1,4 +1,4 @@
package ru.sweetbread.unn.ui
package ru.sweetbread.unn
import io.ktor.client.request.forms.submitForm
import io.ktor.client.request.get
@ -8,7 +8,6 @@ import io.ktor.client.statement.bodyAsText
import io.ktor.http.parameters
import org.json.JSONArray
import org.json.JSONObject
import ru.sweetbread.unn.R
import ru.sweetbread.unn.ui.layout.LoginData
import ru.sweetbread.unn.ui.layout.client
import java.time.LocalDate
@ -39,49 +38,64 @@ enum class LecturerRank(val id: Int) {
AProfessor(R.string.aprofessor)
}
class ScheduleUnit(val oid: Int,
val auditorium: Auditorium,
val date: LocalDate,
val discipline: Discipline,
val kindOfWork: KindOfWork,
val lecturers: ArrayList<Lecturer>,
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<Lecturer>,
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<Post> {
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<Post> {
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()
)

View File

@ -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) {

View File

@ -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

View File

@ -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

View File

@ -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