56 lines
1.6 KiB
Kotlin
56 lines
1.6 KiB
Kotlin
|
|
/*
|
||
|
|
* Created by sweetbread on 22.02.2025, 15:45
|
||
|
|
* Copyright (c) 2025. All rights reserved.
|
||
|
|
* Last modified 22.02.2025, 15:45
|
||
|
|
*/
|
||
|
|
|
||
|
|
package ru.risdeveau.pixeldragon.api
|
||
|
|
|
||
|
|
import io.ktor.client.request.bearerAuth
|
||
|
|
import io.ktor.client.request.get
|
||
|
|
import io.ktor.client.statement.bodyAsText
|
||
|
|
import io.ktor.http.HttpStatusCode
|
||
|
|
import org.json.JSONObject
|
||
|
|
import ru.risdeveau.pixeldragon.baseUrl
|
||
|
|
import ru.risdeveau.pixeldragon.client
|
||
|
|
import ru.risdeveau.pixeldragon.db
|
||
|
|
import ru.risdeveau.pixeldragon.db.Room
|
||
|
|
import ru.risdeveau.pixeldragon.token
|
||
|
|
|
||
|
|
//fun getRooms(): List<Room> {
|
||
|
|
// return db.roomDoa().getAllJoined()
|
||
|
|
//}
|
||
|
|
//
|
||
|
|
//fun updateRooms(): List<Room> {
|
||
|
|
//
|
||
|
|
//}
|
||
|
|
|
||
|
|
suspend fun getRooms(): List<Room> {
|
||
|
|
val r = client.get("$baseUrl/joined_rooms")
|
||
|
|
{ bearerAuth(token) }
|
||
|
|
val rooms = JSONObject(r.bodyAsText()).getJSONArray("joined_rooms")
|
||
|
|
return List<Room>(
|
||
|
|
rooms.length()
|
||
|
|
) { i -> getRoom(rooms.getString(i)) }
|
||
|
|
}
|
||
|
|
|
||
|
|
suspend fun getRoom(rid: String): Room {
|
||
|
|
var room = db.roomDoa().getById(rid)
|
||
|
|
if (room == null) {
|
||
|
|
val name = getState(rid, "m.room.name", "name")
|
||
|
|
val creator = getState(rid, "m.room.create", "creator")
|
||
|
|
val avatar = getState(rid, "m.room.avatar", "url")
|
||
|
|
room = Room(rid, name, creator, null, avatar, null, true)
|
||
|
|
db.roomDoa().insert(room)
|
||
|
|
}
|
||
|
|
|
||
|
|
return room
|
||
|
|
}
|
||
|
|
|
||
|
|
private suspend fun getState(rid: String, state: String, key: String): String? {
|
||
|
|
val r = client.get("$baseUrl/rooms/$rid/state/$state") { bearerAuth(token) }
|
||
|
|
if (r.status != HttpStatusCode.OK) return null
|
||
|
|
val json = JSONObject(r.bodyAsText())
|
||
|
|
if (!json.has(key)) return null
|
||
|
|
return json.getString(key)
|
||
|
|
}
|