feat: Messages
This commit is contained in:
+56
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Created by sweetbread
|
||||
* Copyright (c) 2025. All rights reserved.
|
||||
* Last modified 03.03.2025, 20:21
|
||||
*/
|
||||
|
||||
package ru.risdeveau.pixeldragon.api
|
||||
|
||||
import io.ktor.client.request.bearerAuth
|
||||
import io.ktor.client.request.get
|
||||
import io.ktor.client.request.parameter
|
||||
import io.ktor.client.statement.bodyAsText
|
||||
import org.json.JSONObject
|
||||
import ru.risdeveau.pixeldragon.baseUrl
|
||||
import ru.risdeveau.pixeldragon.client
|
||||
import ru.risdeveau.pixeldragon.token
|
||||
|
||||
class Event (
|
||||
val id: String,
|
||||
val rid: String,
|
||||
val sender: String,
|
||||
val type: String,
|
||||
val content: JSONObject
|
||||
) {
|
||||
constructor(json: JSONObject) : this(
|
||||
json.getString("event_id"),
|
||||
json.getString("room_id"),
|
||||
json.getString("sender"),
|
||||
json.getString("type"),
|
||||
json.getJSONObject("content")
|
||||
)
|
||||
}
|
||||
|
||||
data class EventsAround (
|
||||
val base: Event,
|
||||
val before: List<Event>,
|
||||
val after: List<Event>
|
||||
)
|
||||
|
||||
suspend fun getEventsAround(room: String, event: String): EventsAround {
|
||||
val r = client.get("$baseUrl/rooms/$room/context/$event") {
|
||||
bearerAuth(token)
|
||||
parameter("limit", "50")
|
||||
}
|
||||
val json = JSONObject(r.bodyAsText())
|
||||
|
||||
return EventsAround(
|
||||
Event(json.getJSONObject("event")),
|
||||
if (json.has("events_before")) json.getJSONArray("events_before").let {
|
||||
List<Event>(it.length()) { i -> Event(it.getJSONObject(i))}.reversed()
|
||||
} else listOf(),
|
||||
if (json.has("events_after")) json.getJSONArray("events_after").let {
|
||||
List<Event>(it.length()) { i -> Event(it.getJSONObject(i))}
|
||||
} else listOf()
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user