Remove API.kt and UNNApp.kt from .ui
This commit is contained in:
parent
a417d74154
commit
da7498bf02
@ -5,7 +5,7 @@
|
|||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".ui.UNNApp"
|
android:name=".UNNApp"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
|
@ -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.forms.submitForm
|
||||||
import io.ktor.client.request.get
|
import io.ktor.client.request.get
|
||||||
@ -8,7 +8,6 @@ import io.ktor.client.statement.bodyAsText
|
|||||||
import io.ktor.http.parameters
|
import io.ktor.http.parameters
|
||||||
import org.json.JSONArray
|
import org.json.JSONArray
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import ru.sweetbread.unn.R
|
|
||||||
import ru.sweetbread.unn.ui.layout.LoginData
|
import ru.sweetbread.unn.ui.layout.LoginData
|
||||||
import ru.sweetbread.unn.ui.layout.client
|
import ru.sweetbread.unn.ui.layout.client
|
||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
@ -39,7 +38,8 @@ enum class LecturerRank(val id: Int) {
|
|||||||
AProfessor(R.string.aprofessor)
|
AProfessor(R.string.aprofessor)
|
||||||
}
|
}
|
||||||
|
|
||||||
class ScheduleUnit(val oid: Int,
|
class ScheduleUnit(
|
||||||
|
val oid: Int,
|
||||||
val auditorium: Auditorium,
|
val auditorium: Auditorium,
|
||||||
val date: LocalDate,
|
val date: LocalDate,
|
||||||
val discipline: Discipline,
|
val discipline: Discipline,
|
||||||
@ -47,32 +47,45 @@ class ScheduleUnit(val oid: Int,
|
|||||||
val lecturers: ArrayList<Lecturer>,
|
val lecturers: ArrayList<Lecturer>,
|
||||||
val stream: String,
|
val stream: String,
|
||||||
val begin: LocalTime,
|
val begin: LocalTime,
|
||||||
val end: LocalTime)
|
val end: LocalTime
|
||||||
|
)
|
||||||
|
|
||||||
class Auditorium( val name: String,
|
class Auditorium(
|
||||||
|
val name: String,
|
||||||
val oid: Int,
|
val oid: Int,
|
||||||
val floor: Int,
|
val floor: Int,
|
||||||
val building: Building)
|
val building: Building
|
||||||
class Building( val name: String,
|
)
|
||||||
|
|
||||||
|
class Building(
|
||||||
|
val name: String,
|
||||||
val gid: Int,
|
val gid: Int,
|
||||||
val oid: Int)
|
val oid: Int
|
||||||
|
)
|
||||||
|
|
||||||
class Discipline( val name: String,
|
class Discipline(
|
||||||
|
val name: String,
|
||||||
val oid: Int,
|
val oid: Int,
|
||||||
val type: Int)
|
val type: Int
|
||||||
|
)
|
||||||
|
|
||||||
class KindOfWork( val name: String,
|
class KindOfWork(
|
||||||
|
val name: String,
|
||||||
val oid: Int,
|
val oid: Int,
|
||||||
val uid: String,
|
val uid: String,
|
||||||
val complexity: Int)
|
val complexity: Int
|
||||||
|
)
|
||||||
|
|
||||||
class Lecturer( val name: String,
|
class Lecturer(
|
||||||
|
val name: String,
|
||||||
val rank: LecturerRank,
|
val rank: LecturerRank,
|
||||||
val email: String,
|
val email: String,
|
||||||
val unnId: Int,
|
val unnId: Int,
|
||||||
val uid: String)
|
val uid: String
|
||||||
|
)
|
||||||
|
|
||||||
class User (val unnId: Int?,
|
class User(
|
||||||
|
val unnId: Int?,
|
||||||
val bitrixId: Int,
|
val bitrixId: Int,
|
||||||
val userId: Int,
|
val userId: Int,
|
||||||
val type: Type,
|
val type: Type,
|
||||||
@ -81,7 +94,8 @@ class User (val unnId: Int?,
|
|||||||
val nameEn: String,
|
val nameEn: String,
|
||||||
val isMale: Boolean,
|
val isMale: Boolean,
|
||||||
val birthday: LocalDate,
|
val birthday: LocalDate,
|
||||||
val avatar: ImageSet)
|
val avatar: ImageSet
|
||||||
|
)
|
||||||
|
|
||||||
class Post(
|
class Post(
|
||||||
val id: Int,
|
val id: Int,
|
||||||
@ -89,18 +103,25 @@ class Post(
|
|||||||
val enableComments: Boolean,
|
val enableComments: Boolean,
|
||||||
val numComments: Int,
|
val numComments: Int,
|
||||||
val date: LocalDateTime,
|
val date: LocalDateTime,
|
||||||
val content: String)
|
val content: String
|
||||||
|
)
|
||||||
|
|
||||||
class ImageSet(val original: String,
|
class ImageSet(
|
||||||
|
val original: String,
|
||||||
val thumbnail: String,
|
val thumbnail: String,
|
||||||
val small: String)
|
val small: String
|
||||||
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Authorize user by [login] and [password]
|
* Authorize user by [login] and [password]
|
||||||
*
|
*
|
||||||
* Also defines local vars [PHPSESSID] and [ME]
|
* 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 (!forced) {
|
||||||
if (::PHPSESSID.isInitialized and ::ME.isInitialized)
|
if (::PHPSESSID.isInitialized and ::ME.isInitialized)
|
||||||
return true
|
return true
|
||||||
@ -115,7 +136,8 @@ suspend fun auth(login: String = LoginData.login, password: String = LoginData.p
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
if (r.status.value == 302) {
|
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)
|
getMyself(login)
|
||||||
getCSRF()
|
getCSRF()
|
||||||
return true
|
return true
|
||||||
@ -133,7 +155,7 @@ private suspend fun getMyself(login: String) {
|
|||||||
|
|
||||||
val user = JSONObject(
|
val user = JSONObject(
|
||||||
client.get("$vuzapiURL/user") {
|
client.get("$vuzapiURL/user") {
|
||||||
header("Cookie", "PHPSESSID=${PHPSESSID}")
|
header("Cookie", "PHPSESSID=$PHPSESSID")
|
||||||
}.bodyAsText()
|
}.bodyAsText()
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -141,7 +163,7 @@ private suspend fun getMyself(login: String) {
|
|||||||
unnId = studentinfo.getString("id").toInt(),
|
unnId = studentinfo.getString("id").toInt(),
|
||||||
bitrixId = user.getInt("bitrix_id"),
|
bitrixId = user.getInt("bitrix_id"),
|
||||||
userId = user.getInt("id"),
|
userId = user.getInt("id"),
|
||||||
type = when(studentinfo.getString("type")) {
|
type = when (studentinfo.getString("type")) {
|
||||||
"lecturer" -> Type.Lecturer // ig,,,
|
"lecturer" -> Type.Lecturer // ig,,,
|
||||||
else -> Type.Student
|
else -> Type.Student
|
||||||
},
|
},
|
||||||
@ -229,8 +251,14 @@ suspend fun getSchedule(
|
|||||||
),
|
),
|
||||||
lecturers = lecturers,
|
lecturers = lecturers,
|
||||||
stream = unit.getString("stream"),
|
stream = unit.getString("stream"),
|
||||||
begin = LocalTime.parse(unit.getString("beginLesson"), DateTimeFormatter.ofPattern("HH:mm")),
|
begin = LocalTime.parse(
|
||||||
end = LocalTime.parse(unit.getString("endLesson"), DateTimeFormatter.ofPattern("HH:mm"))
|
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() {
|
suspend fun getCSRF() {
|
||||||
val r = client.get("$restURL/log.blogpost.get") {
|
val r = client.get("$restURL/log.blogpost.get") {
|
||||||
header("Cookie", "PHPSESSID=${PHPSESSID}")
|
header("Cookie", "PHPSESSID=$PHPSESSID")
|
||||||
parameter("sessid", "")
|
parameter("sessid", "")
|
||||||
}
|
}
|
||||||
CSRF = JSONObject(r.bodyAsText()).getString("sessid")
|
CSRF = JSONObject(r.bodyAsText()).getString("sessid")
|
||||||
@ -247,7 +275,7 @@ suspend fun getCSRF() {
|
|||||||
|
|
||||||
suspend fun getBlogposts(): ArrayList<Post> {
|
suspend fun getBlogposts(): ArrayList<Post> {
|
||||||
val r = client.get("$restURL/log.blogpost.get") {
|
val r = client.get("$restURL/log.blogpost.get") {
|
||||||
header("Cookie", "PHPSESSID=${PHPSESSID}")
|
header("Cookie", "PHPSESSID=$PHPSESSID")
|
||||||
parameter("sessid", CSRF)
|
parameter("sessid", CSRF)
|
||||||
}
|
}
|
||||||
val json = JSONObject(r.bodyAsText())
|
val json = JSONObject(r.bodyAsText())
|
||||||
@ -275,7 +303,7 @@ suspend fun getBlogposts(): ArrayList<Post> {
|
|||||||
|
|
||||||
suspend fun getUserByBitrixId(id: Int): User {
|
suspend fun getUserByBitrixId(id: Int): User {
|
||||||
val userId = JSONObject(client.get("$vuzapiURL/user/bx/$id") {
|
val userId = JSONObject(client.get("$vuzapiURL/user/bx/$id") {
|
||||||
header("Cookie", "PHPSESSID=${PHPSESSID}")
|
header("Cookie", "PHPSESSID=$PHPSESSID")
|
||||||
}.bodyAsText()).getInt("id")
|
}.bodyAsText()).getInt("id")
|
||||||
return getUser(userId)
|
return getUser(userId)
|
||||||
}
|
}
|
||||||
@ -283,7 +311,7 @@ suspend fun getUserByBitrixId(id: Int): User {
|
|||||||
suspend fun getUser(id: Int): User {
|
suspend fun getUser(id: Int): User {
|
||||||
val json = JSONObject(
|
val json = JSONObject(
|
||||||
client.get("$vuzapiURL/user/$id") {
|
client.get("$vuzapiURL/user/$id") {
|
||||||
header("Cookie", "PHPSESSID=${PHPSESSID}")
|
header("Cookie", "PHPSESSID=$PHPSESSID")
|
||||||
}.bodyAsText()
|
}.bodyAsText()
|
||||||
)
|
)
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package ru.sweetbread.unn.ui
|
package ru.sweetbread.unn
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@ -6,7 +6,6 @@ import org.acra.config.httpSender
|
|||||||
import org.acra.data.StringFormat
|
import org.acra.data.StringFormat
|
||||||
import org.acra.ktx.initAcra
|
import org.acra.ktx.initAcra
|
||||||
import org.acra.sender.HttpSender
|
import org.acra.sender.HttpSender
|
||||||
import ru.sweetbread.unn.BuildConfig
|
|
||||||
|
|
||||||
class UNNApp : Application() {
|
class UNNApp : Application() {
|
||||||
override fun attachBaseContext(base: Context) {
|
override fun attachBaseContext(base: Context) {
|
@ -47,14 +47,14 @@ import kotlinx.coroutines.flow.StateFlow
|
|||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
import org.kefirsf.bb.BBProcessorFactory
|
import org.kefirsf.bb.BBProcessorFactory
|
||||||
import org.kefirsf.bb.TextProcessor
|
import org.kefirsf.bb.TextProcessor
|
||||||
|
import ru.sweetbread.unn.ImageSet
|
||||||
|
import ru.sweetbread.unn.Post
|
||||||
import ru.sweetbread.unn.R
|
import ru.sweetbread.unn.R
|
||||||
import ru.sweetbread.unn.ui.ImageSet
|
import ru.sweetbread.unn.Type
|
||||||
import ru.sweetbread.unn.ui.Post
|
import ru.sweetbread.unn.User
|
||||||
import ru.sweetbread.unn.ui.Type
|
import ru.sweetbread.unn.getBlogposts
|
||||||
import ru.sweetbread.unn.ui.User
|
import ru.sweetbread.unn.getUserByBitrixId
|
||||||
import ru.sweetbread.unn.ui.getBlogposts
|
import ru.sweetbread.unn.portalURL
|
||||||
import ru.sweetbread.unn.ui.getUserByBitrixId
|
|
||||||
import ru.sweetbread.unn.ui.portalURL
|
|
||||||
import ru.sweetbread.unn.ui.theme.UNNTheme
|
import ru.sweetbread.unn.ui.theme.UNNTheme
|
||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
|
@ -41,15 +41,15 @@ import com.kizitonwose.calendar.compose.WeekCalendar
|
|||||||
import com.kizitonwose.calendar.compose.weekcalendar.rememberWeekCalendarState
|
import com.kizitonwose.calendar.compose.weekcalendar.rememberWeekCalendarState
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
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.R
|
||||||
import ru.sweetbread.unn.ui.Auditorium
|
import ru.sweetbread.unn.ScheduleUnit
|
||||||
import ru.sweetbread.unn.ui.Building
|
import ru.sweetbread.unn.getSchedule
|
||||||
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.ui.theme.UNNTheme
|
import ru.sweetbread.unn.ui.theme.UNNTheme
|
||||||
import java.time.DayOfWeek
|
import java.time.DayOfWeek
|
||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
|
@ -38,7 +38,7 @@ import androidx.compose.ui.unit.dp
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import ru.sweetbread.unn.R
|
import ru.sweetbread.unn.R
|
||||||
import ru.sweetbread.unn.ui.auth
|
import ru.sweetbread.unn.auth
|
||||||
import ru.sweetbread.unn.ui.theme.UNNTheme
|
import ru.sweetbread.unn.ui.theme.UNNTheme
|
||||||
import splitties.activities.start
|
import splitties.activities.start
|
||||||
import splitties.preferences.Preferences
|
import splitties.preferences.Preferences
|
||||||
|
Loading…
x
Reference in New Issue
Block a user