feat: centralise session token

Signed-off-by: Infi <wingit@geist.ga>
This commit is contained in:
Infi 2023-09-10 15:36:13 +02:00
parent dc9de08bc5
commit 6a09467028
9 changed files with 38 additions and 62 deletions

View File

@ -83,6 +83,15 @@ val RevoltHttp = HttpClient(OkHttp) {
install(Logging) { level = LogLevel.INFO }
engine {
addInterceptor { chain ->
val request = chain.request().newBuilder()
.header(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
.build()
chain.proceed(request)
}
}
defaultRequest {
url(REVOLT_BASE)
header("User-Agent", buildUserAgent())

View File

@ -1,6 +1,5 @@
package chat.revolt.api.routes.channel
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
@ -30,8 +29,6 @@ suspend fun fetchMessagesFromChannel(
sort: String? = null
): MessagesInChannel {
val response = RevoltHttp.get("/channels/$channelId/messages") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
parameter("limit", limit)
parameter("include_users", includeUsers)
@ -88,8 +85,6 @@ suspend fun sendMessage(
attachments: List<String>? = null,
): String {
val response = RevoltHttp.post("/channels/$channelId/messages") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
contentType(ContentType.Application.Json)
setBody(
SendMessageBody(
@ -111,8 +106,6 @@ suspend fun editMessage(
newContent: String? = null,
) {
val response = RevoltHttp.patch("/channels/$channelId/messages/$messageId") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
contentType(ContentType.Application.Json)
setBody(
EditMessageBody(
@ -131,15 +124,11 @@ suspend fun editMessage(
}
suspend fun ackChannel(channelId: String, messageId: String = ULID.makeNext()) {
RevoltHttp.put("/channels/$channelId/ack/$messageId") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
RevoltHttp.put("/channels/$channelId/ack/$messageId")
}
suspend fun fetchSingleChannel(channelId: String): Channel {
val response = RevoltHttp.get("/channels/$channelId") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
val response = RevoltHttp.get("/channels/$channelId")
.bodyAsText()
return RevoltJson.decodeFromString(

View File

@ -1,6 +1,5 @@
package chat.revolt.api.routes.invites
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
@ -13,9 +12,7 @@ import io.ktor.client.statement.bodyAsText
import kotlinx.serialization.SerializationException
suspend fun fetchInviteByCode(code: String): RsResult<Invite, RevoltError> {
val response = RevoltHttp.get("/invites/$code") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
val response = RevoltHttp.get("/invites/$code")
.bodyAsText()
try {
@ -30,9 +27,7 @@ suspend fun fetchInviteByCode(code: String): RsResult<Invite, RevoltError> {
}
suspend fun joinInviteByCode(code: String): RsResult<InviteJoined, RevoltError> {
val response = RevoltHttp.post("/invites/$code") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
val response = RevoltHttp.post("/invites/$code")
.bodyAsText()
try {

View File

@ -1,12 +1,19 @@
package chat.revolt.api.routes.safety
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.schemas.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
import chat.revolt.api.schemas.ContentReportReason
import chat.revolt.api.schemas.FullMessageReport
import chat.revolt.api.schemas.FullServerReport
import chat.revolt.api.schemas.FullUserReport
import chat.revolt.api.schemas.MessageReport
import chat.revolt.api.schemas.ServerReport
import chat.revolt.api.schemas.UserReport
import chat.revolt.api.schemas.UserReportReason
import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.client.statement.bodyAsText
import kotlinx.serialization.SerializationException
suspend fun putMessageReport(
@ -24,7 +31,6 @@ suspend fun putMessageReport(
)
val response = RevoltHttp.post("/safety/report") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
setBody(
RevoltJson.encodeToString(
FullMessageReport.serializer(),
@ -57,7 +63,6 @@ suspend fun putServerReport(
)
val response = RevoltHttp.post("/safety/report") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
setBody(
RevoltJson.encodeToString(
FullServerReport.serializer(),
@ -90,7 +95,6 @@ suspend fun putUserReport(
)
val response = RevoltHttp.post("/safety/report") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
setBody(
RevoltJson.encodeToString(
FullUserReport.serializer(),

View File

@ -21,9 +21,7 @@ data class FetchMembersResponse(
)
suspend fun ackServer(serverId: String) {
RevoltHttp.put("/servers/$serverId/ack") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
RevoltHttp.put("/servers/$serverId/ack")
}
suspend fun fetchMembers(
@ -32,8 +30,6 @@ suspend fun fetchMembers(
pure: Boolean = false
): FetchMembersResponse {
val response = RevoltHttp.get("/servers/$serverId/members") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
parameter("exclude_offline", !includeOffline)
}
@ -67,9 +63,7 @@ suspend fun fetchMembers(
}
suspend fun fetchMember(serverId: String, userId: String, pure: Boolean = false): Member {
val response = RevoltHttp.get("/servers/$serverId/members/$userId") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
val response = RevoltHttp.get("/servers/$serverId/members/$userId")
try {
val error = RevoltJson.decodeFromString(RevoltError.serializer(), response.bodyAsText())
@ -91,8 +85,6 @@ suspend fun fetchMember(serverId: String, userId: String, pure: Boolean = false)
suspend fun leaveOrDeleteServer(serverId: String, leaveSilently: Boolean = false) {
RevoltHttp.delete("/servers/$serverId") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
parameter("leave_silently", leaveSilently)
}
}

View File

@ -56,8 +56,6 @@ suspend fun getKeys(vararg keys: String): Map<String, SyncedSetting> {
suspend fun setKey(key: String, value: String) {
RevoltHttp.post("/sync/settings/set") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
parameter("timestamp", System.currentTimeMillis())
// format: {"key": "value"}

View File

@ -1,17 +1,14 @@
package chat.revolt.api.routes.sync
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.schemas.ChannelUnreadResponse
import io.ktor.client.request.*
import io.ktor.client.statement.*
import io.ktor.client.request.get
import io.ktor.client.statement.bodyAsText
import kotlinx.serialization.builtins.ListSerializer
suspend fun syncUnreads(): List<ChannelUnreadResponse> {
val response = RevoltHttp.get("/sync/unreads") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
val response = RevoltHttp.get("/sync/unreads")
.bodyAsText()
return RevoltJson.decodeFromString(

View File

@ -4,14 +4,14 @@ import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import io.ktor.client.request.*
import io.ktor.client.statement.*
import io.ktor.client.request.delete
import io.ktor.client.request.put
import io.ktor.client.statement.bodyAsText
import kotlinx.serialization.SerializationException
import kotlin.collections.set
suspend fun blockUser(userId: String) {
val response = RevoltHttp.put("/users/$userId/block") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
val response = RevoltHttp.put("/users/$userId/block")
.bodyAsText()
try {
@ -26,9 +26,7 @@ suspend fun blockUser(userId: String) {
}
suspend fun unblockUser(userId: String) {
val response = RevoltHttp.delete("/users/$userId/block") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
val response = RevoltHttp.delete("/users/$userId/block")
.bodyAsText()
try {

View File

@ -11,9 +11,7 @@ import io.ktor.client.statement.bodyAsText
import kotlinx.serialization.SerializationException
suspend fun fetchSelf(): User {
val response = RevoltHttp.get("/users/@me") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
val response = RevoltHttp.get("/users/@me")
.bodyAsText()
try {
@ -36,9 +34,7 @@ suspend fun fetchSelf(): User {
}
suspend fun fetchUser(id: String): User {
val res = RevoltHttp.get("/users/$id") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
val res = RevoltHttp.get("/users/$id")
if (res.status.value == 404) {
return User.getPlaceholder(id)
@ -73,9 +69,7 @@ suspend fun addUserIfUnknown(id: String) {
}
suspend fun fetchUserProfile(id: String): Profile {
val res = RevoltHttp.get("/users/$id/profile") {
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
}
val res = RevoltHttp.get("/users/$id/profile")
val response = res.bodyAsText()