From 6a09467028007485620a04184d52b146e069ca23 Mon Sep 17 00:00:00 2001 From: Infi Date: Sun, 10 Sep 2023 15:36:13 +0200 Subject: [PATCH] feat: centralise session token Signed-off-by: Infi --- app/src/main/java/chat/revolt/api/RevoltAPI.kt | 9 +++++++++ .../chat/revolt/api/routes/channel/Channel.kt | 15 ++------------- .../chat/revolt/api/routes/invites/Invites.kt | 9 ++------- .../chat/revolt/api/routes/safety/Reporting.kt | 18 +++++++++++------- .../chat/revolt/api/routes/server/Server.kt | 12 ++---------- .../revolt/api/routes/sync/SettingsSync.kt | 2 -- .../chat/revolt/api/routes/sync/UnreadSync.kt | 9 +++------ .../revolt/api/routes/user/Relationships.kt | 14 ++++++-------- .../java/chat/revolt/api/routes/user/User.kt | 12 +++--------- 9 files changed, 38 insertions(+), 62 deletions(-) diff --git a/app/src/main/java/chat/revolt/api/RevoltAPI.kt b/app/src/main/java/chat/revolt/api/RevoltAPI.kt index 036ad0c3..57288e8d 100644 --- a/app/src/main/java/chat/revolt/api/RevoltAPI.kt +++ b/app/src/main/java/chat/revolt/api/RevoltAPI.kt @@ -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()) diff --git a/app/src/main/java/chat/revolt/api/routes/channel/Channel.kt b/app/src/main/java/chat/revolt/api/routes/channel/Channel.kt index a86e3ba6..b8fb1502 100644 --- a/app/src/main/java/chat/revolt/api/routes/channel/Channel.kt +++ b/app/src/main/java/chat/revolt/api/routes/channel/Channel.kt @@ -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? = 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( diff --git a/app/src/main/java/chat/revolt/api/routes/invites/Invites.kt b/app/src/main/java/chat/revolt/api/routes/invites/Invites.kt index 51dc2602..94f19bb3 100644 --- a/app/src/main/java/chat/revolt/api/routes/invites/Invites.kt +++ b/app/src/main/java/chat/revolt/api/routes/invites/Invites.kt @@ -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 { - 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 { } suspend fun joinInviteByCode(code: String): RsResult { - val response = RevoltHttp.post("/invites/$code") { - headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken) - } + val response = RevoltHttp.post("/invites/$code") .bodyAsText() try { diff --git a/app/src/main/java/chat/revolt/api/routes/safety/Reporting.kt b/app/src/main/java/chat/revolt/api/routes/safety/Reporting.kt index f91e501a..172f6455 100644 --- a/app/src/main/java/chat/revolt/api/routes/safety/Reporting.kt +++ b/app/src/main/java/chat/revolt/api/routes/safety/Reporting.kt @@ -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(), diff --git a/app/src/main/java/chat/revolt/api/routes/server/Server.kt b/app/src/main/java/chat/revolt/api/routes/server/Server.kt index 23f3347a..bb954b66 100644 --- a/app/src/main/java/chat/revolt/api/routes/server/Server.kt +++ b/app/src/main/java/chat/revolt/api/routes/server/Server.kt @@ -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) } } \ No newline at end of file diff --git a/app/src/main/java/chat/revolt/api/routes/sync/SettingsSync.kt b/app/src/main/java/chat/revolt/api/routes/sync/SettingsSync.kt index d286f63b..183a0085 100644 --- a/app/src/main/java/chat/revolt/api/routes/sync/SettingsSync.kt +++ b/app/src/main/java/chat/revolt/api/routes/sync/SettingsSync.kt @@ -56,8 +56,6 @@ suspend fun getKeys(vararg keys: String): Map { 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"} diff --git a/app/src/main/java/chat/revolt/api/routes/sync/UnreadSync.kt b/app/src/main/java/chat/revolt/api/routes/sync/UnreadSync.kt index 9a59401c..87d1523d 100644 --- a/app/src/main/java/chat/revolt/api/routes/sync/UnreadSync.kt +++ b/app/src/main/java/chat/revolt/api/routes/sync/UnreadSync.kt @@ -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 { - val response = RevoltHttp.get("/sync/unreads") { - headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken) - } + val response = RevoltHttp.get("/sync/unreads") .bodyAsText() return RevoltJson.decodeFromString( diff --git a/app/src/main/java/chat/revolt/api/routes/user/Relationships.kt b/app/src/main/java/chat/revolt/api/routes/user/Relationships.kt index 4276b062..726c3c73 100644 --- a/app/src/main/java/chat/revolt/api/routes/user/Relationships.kt +++ b/app/src/main/java/chat/revolt/api/routes/user/Relationships.kt @@ -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 { diff --git a/app/src/main/java/chat/revolt/api/routes/user/User.kt b/app/src/main/java/chat/revolt/api/routes/user/User.kt index 4b17a531..ccf20ca2 100644 --- a/app/src/main/java/chat/revolt/api/routes/user/User.kt +++ b/app/src/main/java/chat/revolt/api/routes/user/User.kt @@ -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()