diff --git a/app/src/main/java/chat/revolt/activities/MainActivity.kt b/app/src/main/java/chat/revolt/activities/MainActivity.kt index f8ff6e2b..ecc25bf1 100644 --- a/app/src/main/java/chat/revolt/activities/MainActivity.kt +++ b/app/src/main/java/chat/revolt/activities/MainActivity.kt @@ -45,6 +45,7 @@ import chat.revolt.api.RevoltHttp import chat.revolt.api.routes.onboard.needsOnboarding import chat.revolt.api.settings.GlobalState import chat.revolt.api.settings.SyncedSettings +import chat.revolt.api.api import chat.revolt.ndk.NativeLibraries import chat.revolt.persistence.KVStorage import chat.revolt.screens.DefaultDestinationScreen @@ -111,7 +112,7 @@ class MainActivityViewModel @Inject constructor( } private suspend fun canReachRevolt(): Boolean { - val res = RevoltHttp.get("/") + val res = RevoltHttp.get("/".api()) return res.status.value == 200 } diff --git a/app/src/main/java/chat/revolt/api/RevoltAPI.kt b/app/src/main/java/chat/revolt/api/RevoltAPI.kt index fff3032e..ac72d47e 100644 --- a/app/src/main/java/chat/revolt/api/RevoltAPI.kt +++ b/app/src/main/java/chat/revolt/api/RevoltAPI.kt @@ -49,7 +49,7 @@ import java.lang.reflect.InvocationTargetException import java.net.SocketException import chat.revolt.api.schemas.Channel as ChannelSchema -const val REVOLT_BASE = "https://api.revolt.chat" +const val REVOLT_BASE = "https://revolt.chat/api" const val REVOLT_SUPPORT = "https://support.revolt.chat" const val REVOLT_MARKETING = "https://revolt.chat" const val REVOLT_FILES = "https://autumn.revolt.chat" @@ -59,6 +59,10 @@ const val REVOLT_INVITES = "https://rvlt.gg" const val REVOLT_WEBSOCKET = "wss://ws.revolt.chat" const val REVOLT_KJBOOK = "https://revoltchat.github.io/android" +fun String.api(): String { + return "$REVOLT_BASE$this" +} + fun buildUserAgent(accessMethod: String = "Ktor"): String { return "$accessMethod RevoltAndroid/${BuildConfig.VERSION_NAME} ${BuildConfig.APPLICATION_ID} (Android ${android.os.Build.VERSION.SDK_INT}; ${android.os.Build.MANUFACTURER} ${android.os.Build.DEVICE}; (Kotlin ${KotlinVersion.CURRENT})" } diff --git a/app/src/main/java/chat/revolt/api/routes/account/Login.kt b/app/src/main/java/chat/revolt/api/routes/account/Login.kt index 6bec3912..2b391482 100644 --- a/app/src/main/java/chat/revolt/api/routes/account/Login.kt +++ b/app/src/main/java/chat/revolt/api/routes/account/Login.kt @@ -5,6 +5,7 @@ import android.util.Log import chat.revolt.api.RevoltError import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import io.ktor.client.request.post import io.ktor.client.request.setBody import io.ktor.client.statement.HttpResponse @@ -109,7 +110,7 @@ data class EmailPasswordAssessment( suspend fun negotiateAuthentication(email: String, password: String): EmailPasswordAssessment { val sessionName = friendlySessionName() - val response: HttpResponse = RevoltHttp.post("/auth/session/login") { + val response: HttpResponse = RevoltHttp.post("/auth/session/login".api()) { contentType(ContentType.Application.Json) setBody(LoginNegotiation(email, password, sessionName, null)) } @@ -152,7 +153,7 @@ suspend fun authenticateWithMfaTotpCode( mfaTicket: String, mfaResponse: MfaResponseTotpCode ): EmailPasswordAssessment { - val response: HttpResponse = RevoltHttp.post("/auth/session/login") { + val response: HttpResponse = RevoltHttp.post("/auth/session/login".api()) { contentType(ContentType.Application.Json) setBody(LoginMfaAmendmentTotpCode(mfaTicket, mfaResponse, friendlySessionName())) } @@ -176,7 +177,7 @@ suspend fun authenticateWithMfaRecoveryCode( mfaTicket: String, mfaResponse: MfaResponseRecoveryCode ): EmailPasswordAssessment { - val response: HttpResponse = RevoltHttp.post("/auth/session/login") { + val response: HttpResponse = RevoltHttp.post("/auth/session/login".api()) { contentType(ContentType.Application.Json) setBody(LoginMfaAmendmentRecoveryCode(mfaTicket, mfaResponse, friendlySessionName())) } diff --git a/app/src/main/java/chat/revolt/api/routes/account/Register.kt b/app/src/main/java/chat/revolt/api/routes/account/Register.kt index f109f53b..57bd3056 100644 --- a/app/src/main/java/chat/revolt/api/routes/account/Register.kt +++ b/app/src/main/java/chat/revolt/api/routes/account/Register.kt @@ -4,6 +4,7 @@ import chat.revolt.api.RevoltError import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson import chat.revolt.api.schemas.RsResult +import chat.revolt.api.api import io.ktor.client.request.post import io.ktor.client.request.setBody import io.ktor.client.statement.bodyAsText @@ -21,7 +22,7 @@ data class RegistrationBody( ) suspend fun register(body: RegistrationBody): RsResult { - val response = RevoltHttp.post("/auth/account/create") { + val response = RevoltHttp.post("/auth/account/create".api()) { setBody(body) contentType(ContentType.Application.Json) } diff --git a/app/src/main/java/chat/revolt/api/routes/auth/Sessions.kt b/app/src/main/java/chat/revolt/api/routes/auth/Sessions.kt index bf418453..6da806ee 100644 --- a/app/src/main/java/chat/revolt/api/routes/auth/Sessions.kt +++ b/app/src/main/java/chat/revolt/api/routes/auth/Sessions.kt @@ -2,6 +2,7 @@ package chat.revolt.api.routes.auth import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import chat.revolt.api.schemas.Session import io.ktor.client.request.delete import io.ktor.client.request.get @@ -10,7 +11,7 @@ import io.ktor.client.statement.bodyAsText import kotlinx.serialization.builtins.ListSerializer suspend fun fetchAllSessions(): List { - val response = RevoltHttp.get("/auth/session/all") + val response = RevoltHttp.get("/auth/session/all".api()) .bodyAsText() return RevoltJson.decodeFromString( @@ -20,11 +21,11 @@ suspend fun fetchAllSessions(): List { } suspend fun logoutSessionById(id: String) { - RevoltHttp.delete("/auth/session/$id") + RevoltHttp.delete("/auth/session/$id".api()) } suspend fun logoutAllSessions(includingSelf: Boolean = false) { - RevoltHttp.delete("/auth/session/all") { + RevoltHttp.delete("/auth/session/all".api()) { parameter("revoke_self", includingSelf) } } 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 4446d52e..73d495df 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 @@ -4,6 +4,7 @@ import chat.revolt.api.RevoltAPI import chat.revolt.api.RevoltError import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import chat.revolt.api.internals.ULID import chat.revolt.api.schemas.Channel import chat.revolt.api.schemas.Message @@ -36,7 +37,7 @@ suspend fun fetchMessagesFromChannel( nearby: String? = null, sort: String? = null ): MessagesInChannel { - val response = RevoltHttp.get("/channels/$channelId/messages") { + val response = RevoltHttp.get("/channels/$channelId/messages".api()) { parameter("limit", limit) parameter("include_users", includeUsers) @@ -103,7 +104,7 @@ suspend fun sendMessage( attachments: List? = null, idempotencyKey: String = ULID.makeNext() ): String { - val response = RevoltHttp.post("/channels/$channelId/messages") { + val response = RevoltHttp.post("/channels/$channelId/messages".api()) { contentType(ContentType.Application.Json) setBody( SendMessageBody( @@ -121,7 +122,7 @@ suspend fun sendMessage( } suspend fun editMessage(channelId: String, messageId: String, newContent: String? = null) { - val response = RevoltHttp.patch("/channels/$channelId/messages/$messageId") { + val response = RevoltHttp.patch("/channels/$channelId/messages/$messageId".api()) { contentType(ContentType.Application.Json) setBody( EditMessageBody( @@ -140,15 +141,15 @@ suspend fun editMessage(channelId: String, messageId: String, newContent: String } suspend fun deleteMessage(channelId: String, messageId: String) { - RevoltHttp.delete("/channels/$channelId/messages/$messageId") + RevoltHttp.delete("/channels/$channelId/messages/$messageId".api()) } suspend fun ackChannel(channelId: String, messageId: String = ULID.makeNext()) { - RevoltHttp.put("/channels/$channelId/ack/$messageId") + RevoltHttp.put("/channels/$channelId/ack/$messageId".api()) } suspend fun fetchSingleChannel(channelId: String): Channel { - val response = RevoltHttp.get("/channels/$channelId") + val response = RevoltHttp.get("/channels/$channelId".api()) .bodyAsText() return RevoltJson.decodeFromString( @@ -158,7 +159,7 @@ suspend fun fetchSingleChannel(channelId: String): Channel { } suspend fun fetchGroupParticipants(channelId: String): List { - val response = RevoltHttp.get("/channels/$channelId/members") + val response = RevoltHttp.get("/channels/$channelId/members".api()) .bodyAsText() return RevoltJson.decodeFromString( @@ -168,7 +169,7 @@ suspend fun fetchGroupParticipants(channelId: String): List { } suspend fun createInvite(channelId: String): CreateInviteResponse { - val response = RevoltHttp.post("/channels/$channelId/invites") + val response = RevoltHttp.post("/channels/$channelId/invites".api()) .bodyAsText() val error = RevoltJson.decodeFromString(RevoltError.serializer(), response) @@ -178,7 +179,7 @@ suspend fun createInvite(channelId: String): CreateInviteResponse { } suspend fun fetchSingleMessage(channelId: String, messageId: String): Message { - val response = RevoltHttp.get("/channels/$channelId/messages/$messageId") + val response = RevoltHttp.get("/channels/$channelId/messages/$messageId".api()) .bodyAsText() return RevoltJson.decodeFromString( @@ -188,7 +189,7 @@ suspend fun fetchSingleMessage(channelId: String, messageId: String): Message { } suspend fun leaveDeleteOrCloseChannel(channelId: String, leaveSilently: Boolean = false) { - RevoltHttp.delete("/channels/$channelId") { + RevoltHttp.delete("/channels/$channelId".api()) { parameter("leave_silently", leaveSilently) } } @@ -229,7 +230,7 @@ suspend fun patchChannel( body["nsfw"] = RevoltJson.encodeToJsonElement(Boolean.serializer(), nsfw) } - val response = RevoltHttp.patch("/channels/$channelId") { + val response = RevoltHttp.patch("/channels/$channelId".api()) { contentType(ContentType.Application.Json) setBody( RevoltJson.encodeToString( diff --git a/app/src/main/java/chat/revolt/api/routes/channel/GroupDM.kt b/app/src/main/java/chat/revolt/api/routes/channel/GroupDM.kt index 14b6752e..f4770553 100644 --- a/app/src/main/java/chat/revolt/api/routes/channel/GroupDM.kt +++ b/app/src/main/java/chat/revolt/api/routes/channel/GroupDM.kt @@ -3,6 +3,7 @@ package chat.revolt.api.routes.channel import chat.revolt.api.RevoltError import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import chat.revolt.api.schemas.Channel import chat.revolt.screens.create.MAX_ADDABLE_PEOPLE_IN_GROUP import io.ktor.client.request.delete @@ -27,7 +28,7 @@ suspend fun createGroupDM(name: String, members: List): Channel { throw Exception("Too many members, maximum is $MAX_ADDABLE_PEOPLE_IN_GROUP") } - val response = RevoltHttp.post("/channels/create") { + val response = RevoltHttp.post("/channels/create".api()) { contentType(ContentType.Application.Json) setBody(CreateGroupDMBody(name, members)) }.bodyAsText() @@ -43,7 +44,7 @@ suspend fun createGroupDM(name: String, members: List): Channel { } suspend fun removeMember(channelId: String, userId: String) { - val response = RevoltHttp.delete("/channels/$channelId/recipients/$userId") + val response = RevoltHttp.delete("/channels/$channelId/recipients/$userId".api()) if (!response.status.isSuccess()) { throw Error(response.status.toString()) @@ -51,7 +52,7 @@ suspend fun removeMember(channelId: String, userId: String) { } suspend fun addMember(channelId: String, userId: String) { - val response = RevoltHttp.put("/channels/$channelId/recipients/$userId") + val response = RevoltHttp.put("/channels/$channelId/recipients/$userId".api()) if (!response.status.isSuccess()) { throw Error(response.status.toString()) diff --git a/app/src/main/java/chat/revolt/api/routes/channel/Message.kt b/app/src/main/java/chat/revolt/api/routes/channel/Message.kt index b6628537..3dcb2e97 100644 --- a/app/src/main/java/chat/revolt/api/routes/channel/Message.kt +++ b/app/src/main/java/chat/revolt/api/routes/channel/Message.kt @@ -1,13 +1,14 @@ package chat.revolt.api.routes.channel import chat.revolt.api.RevoltHttp +import chat.revolt.api.api import io.ktor.client.request.delete import io.ktor.client.request.put suspend fun react(channelId: String, messageId: String, emoji: String) { - RevoltHttp.put("/channels/$channelId/messages/$messageId/reactions/$emoji") + RevoltHttp.put("/channels/$channelId/messages/$messageId/reactions/$emoji".api()) } suspend fun unreact(channelId: String, messageId: String, emoji: String) { - RevoltHttp.delete("/channels/$channelId/messages/$messageId/reactions/$emoji") + RevoltHttp.delete("/channels/$channelId/messages/$messageId/reactions/$emoji".api()) } \ No newline at end of file diff --git a/app/src/main/java/chat/revolt/api/routes/custom/Emoji.kt b/app/src/main/java/chat/revolt/api/routes/custom/Emoji.kt index a1381261..2e9060c3 100644 --- a/app/src/main/java/chat/revolt/api/routes/custom/Emoji.kt +++ b/app/src/main/java/chat/revolt/api/routes/custom/Emoji.kt @@ -2,12 +2,13 @@ package chat.revolt.api.routes.custom import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import chat.revolt.api.schemas.Emoji import io.ktor.client.request.get import io.ktor.client.statement.bodyAsText suspend fun fetchEmoji(id: String): Emoji { - val response = RevoltHttp.get("/custom/emoji/$id").bodyAsText() + val response = RevoltHttp.get("/custom/emoji/$id".api()).bodyAsText() return RevoltJson.decodeFromString( Emoji.serializer(), response 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 c281f6f6..46db268d 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 @@ -3,6 +3,7 @@ package chat.revolt.api.routes.invites import chat.revolt.api.RevoltError import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import chat.revolt.api.schemas.Invite import chat.revolt.api.schemas.InviteJoined import chat.revolt.api.schemas.RsResult @@ -12,7 +13,7 @@ import io.ktor.client.statement.bodyAsText import kotlinx.serialization.SerializationException suspend fun fetchInviteByCode(code: String): RsResult { - val response = RevoltHttp.get("/invites/$code") + val response = RevoltHttp.get("/invites/$code".api()) .bodyAsText() try { @@ -27,7 +28,7 @@ suspend fun fetchInviteByCode(code: String): RsResult { } suspend fun joinInviteByCode(code: String): RsResult { - val response = RevoltHttp.post("/invites/$code") + val response = RevoltHttp.post("/invites/$code".api()) .bodyAsText() try { diff --git a/app/src/main/java/chat/revolt/api/routes/misc/Root.kt b/app/src/main/java/chat/revolt/api/routes/misc/Root.kt index 6ced90a2..99b63a88 100644 --- a/app/src/main/java/chat/revolt/api/routes/misc/Root.kt +++ b/app/src/main/java/chat/revolt/api/routes/misc/Root.kt @@ -1,8 +1,9 @@ package chat.revolt.api.routes.misc import chat.revolt.api.RevoltHttp -import io.ktor.client.call.* -import io.ktor.client.request.* +import chat.revolt.api.api +import io.ktor.client.call.body +import io.ktor.client.request.get import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -48,5 +49,5 @@ data class Voso( ) suspend fun getRootRoute(): Root { - return RevoltHttp.get("/").body() + return RevoltHttp.get("/".api()).body() } diff --git a/app/src/main/java/chat/revolt/api/routes/onboard/Onboarding.kt b/app/src/main/java/chat/revolt/api/routes/onboard/Onboarding.kt index 37d3c7c7..9126648b 100644 --- a/app/src/main/java/chat/revolt/api/routes/onboard/Onboarding.kt +++ b/app/src/main/java/chat/revolt/api/routes/onboard/Onboarding.kt @@ -5,6 +5,7 @@ import chat.revolt.api.RevoltAPI import chat.revolt.api.RevoltError import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import chat.revolt.api.schemas.RsResult import io.ktor.client.request.get import io.ktor.client.request.header @@ -23,7 +24,7 @@ data class OnboardingResponse( ) suspend fun needsOnboarding(sessionToken: String = RevoltAPI.sessionToken): Boolean { - val response = RevoltHttp.get("/onboard/hello") { + val response = RevoltHttp.get("/onboard/hello".api()) { header(RevoltAPI.TOKEN_HEADER_NAME, sessionToken) } @@ -49,7 +50,7 @@ suspend fun completeOnboarding( body: OnboardingCompletionBody, sessionToken: String = RevoltAPI.sessionToken ): RsResult { - val response = RevoltHttp.post("/onboard/complete") { + val response = RevoltHttp.post("/onboard/complete".api()) { setBody(body) contentType(ContentType.Application.Json) header(RevoltAPI.TOKEN_HEADER_NAME, sessionToken) diff --git a/app/src/main/java/chat/revolt/api/routes/push/Push.kt b/app/src/main/java/chat/revolt/api/routes/push/Push.kt index 77e23856..0e9dc263 100644 --- a/app/src/main/java/chat/revolt/api/routes/push/Push.kt +++ b/app/src/main/java/chat/revolt/api/routes/push/Push.kt @@ -2,6 +2,7 @@ package chat.revolt.api.routes.push import chat.revolt.api.RevoltHttp import chat.revolt.api.routes.account.WebPushData +import chat.revolt.api.api import io.ktor.client.request.post import io.ktor.client.request.setBody import io.ktor.http.ContentType @@ -18,7 +19,7 @@ suspend fun subscribePush( auth = auth ) - RevoltHttp.post("/push/subscribe") { + RevoltHttp.post("/push/subscribe".api()) { setBody(data) contentType(ContentType.Application.Json) } 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 8ddeae28..e471a048 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 @@ -11,6 +11,7 @@ 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 chat.revolt.api.api import io.ktor.client.request.post import io.ktor.client.request.setBody import io.ktor.client.statement.bodyAsText @@ -30,7 +31,7 @@ suspend fun putMessageReport( additional_context = additionalContext ) - val response = RevoltHttp.post("/safety/report") { + val response = RevoltHttp.post("/safety/report".api()) { setBody( RevoltJson.encodeToString( FullMessageReport.serializer(), @@ -62,7 +63,7 @@ suspend fun putServerReport( additional_context = additionalContext ) - val response = RevoltHttp.post("/safety/report") { + val response = RevoltHttp.post("/safety/report".api()) { setBody( RevoltJson.encodeToString( FullServerReport.serializer(), @@ -94,7 +95,7 @@ suspend fun putUserReport( additional_context = additionalContext ) - val response = RevoltHttp.post("/safety/report") { + val response = RevoltHttp.post("/safety/report".api()) { 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 5cac1cc2..0965c374 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 @@ -4,6 +4,7 @@ import chat.revolt.api.RevoltAPI import chat.revolt.api.RevoltError import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import chat.revolt.api.schemas.Member import chat.revolt.api.schemas.User import io.ktor.client.request.delete @@ -21,7 +22,7 @@ data class FetchMembersResponse( ) suspend fun ackServer(serverId: String) { - RevoltHttp.put("/servers/$serverId/ack") + RevoltHttp.put("/servers/$serverId/ack".api()) } suspend fun fetchMembers( @@ -29,7 +30,7 @@ suspend fun fetchMembers( includeOffline: Boolean = false, pure: Boolean = false ): FetchMembersResponse { - val response = RevoltHttp.get("/servers/$serverId/members") { + val response = RevoltHttp.get("/servers/$serverId/members".api()) { parameter("exclude_offline", !includeOffline) } @@ -63,7 +64,7 @@ suspend fun fetchMembers( } suspend fun fetchMember(serverId: String, userId: String, pure: Boolean = false): Member { - val response = RevoltHttp.get("/servers/$serverId/members/$userId") + val response = RevoltHttp.get("/servers/$serverId/members/$userId".api()) try { val error = RevoltJson.decodeFromString(RevoltError.serializer(), response.bodyAsText()) @@ -86,7 +87,7 @@ suspend fun fetchMember(serverId: String, userId: String, pure: Boolean = false) } suspend fun leaveOrDeleteServer(serverId: String, leaveSilently: Boolean = false) { - RevoltHttp.delete("/servers/$serverId") { + RevoltHttp.delete("/servers/$serverId".api()) { parameter("leave_silently", leaveSilently) } } 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 9c3df204..3f1a7709 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 @@ -3,6 +3,7 @@ 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.api import io.ktor.client.request.parameter import io.ktor.client.request.post import io.ktor.client.request.setBody @@ -17,7 +18,7 @@ import kotlinx.serialization.json.JsonArray data class SyncedSetting(val timestamp: Long, val value: String) suspend fun getKeys(vararg keys: String, revoltToken: String): Map { - val response = RevoltHttp.post("/sync/settings/fetch") { + val response = RevoltHttp.post("/sync/settings/fetch".api()) { headers.append(RevoltAPI.TOKEN_HEADER_NAME, revoltToken) // format: {"keys": ["key1", "key2"]} @@ -55,7 +56,7 @@ suspend fun getKeys(vararg keys: String): Map { } suspend fun setKey(key: String, value: String) { - RevoltHttp.post("/sync/settings/set") { + RevoltHttp.post("/sync/settings/set".api()) { 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 692aeb80..d38dadbf 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 @@ -2,13 +2,14 @@ package chat.revolt.api.routes.sync import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import chat.revolt.api.schemas.ChannelUnreadResponse 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") + val response = RevoltHttp.get("/sync/unreads".api()) .bodyAsText() return RevoltJson.decodeFromString( diff --git a/app/src/main/java/chat/revolt/api/routes/user/DirectMessaging.kt b/app/src/main/java/chat/revolt/api/routes/user/DirectMessaging.kt index d566ae14..c41ccecd 100644 --- a/app/src/main/java/chat/revolt/api/routes/user/DirectMessaging.kt +++ b/app/src/main/java/chat/revolt/api/routes/user/DirectMessaging.kt @@ -3,13 +3,14 @@ package chat.revolt.api.routes.user import chat.revolt.api.RevoltError import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import chat.revolt.api.schemas.Channel import io.ktor.client.request.get import io.ktor.client.statement.bodyAsText import kotlinx.serialization.SerializationException suspend fun openDM(userId: String): Channel { - val response = RevoltHttp.get("/users/$userId/dm") + val response = RevoltHttp.get("/users/$userId/dm".api()) .bodyAsText() try { 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 85991e85..f9db7e98 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 @@ -3,6 +3,7 @@ package chat.revolt.api.routes.user import chat.revolt.api.RevoltError import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import io.ktor.client.request.delete import io.ktor.client.request.post import io.ktor.client.request.put @@ -13,7 +14,7 @@ import io.ktor.http.contentType import kotlinx.serialization.SerializationException suspend fun blockUser(userId: String) { - val response = RevoltHttp.put("/users/$userId/block") + val response = RevoltHttp.put("/users/$userId/block".api()) .bodyAsText() try { @@ -25,7 +26,7 @@ suspend fun blockUser(userId: String) { } suspend fun unblockUser(userId: String) { - val response = RevoltHttp.delete("/users/$userId/block") + val response = RevoltHttp.delete("/users/$userId/block".api()) .bodyAsText() try { @@ -37,7 +38,7 @@ suspend fun unblockUser(userId: String) { } suspend fun friendUser(username: String) { - val response = RevoltHttp.post("/users/friend") { + val response = RevoltHttp.post("/users/friend".api()) { contentType(ContentType.Application.Json) setBody(mapOf("username" to username)) } @@ -52,7 +53,7 @@ suspend fun friendUser(username: String) { } suspend fun acceptFriendRequest(userId: String) { - val response = RevoltHttp.put("/users/$userId/friend") + val response = RevoltHttp.put("/users/$userId/friend".api()) .bodyAsText() try { @@ -64,7 +65,7 @@ suspend fun acceptFriendRequest(userId: String) { } suspend fun unfriendUser(userId: String) { - val response = RevoltHttp.delete("/users/$userId/friend") + val response = RevoltHttp.delete("/users/$userId/friend".api()) .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 3ec8ea91..5d79e3d8 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 @@ -4,6 +4,7 @@ import chat.revolt.api.RevoltAPI import chat.revolt.api.RevoltError import chat.revolt.api.RevoltHttp import chat.revolt.api.RevoltJson +import chat.revolt.api.api import chat.revolt.api.schemas.Profile import chat.revolt.api.schemas.Status import chat.revolt.api.schemas.User @@ -20,7 +21,7 @@ import kotlinx.serialization.builtins.serializer import kotlinx.serialization.json.JsonElement suspend fun fetchSelf(): User { - val response = RevoltHttp.get("/users/@me") + val response = RevoltHttp.get("/users/@me".api()) .bodyAsText() try { @@ -83,7 +84,7 @@ suspend fun patchSelf( body["remove"] = RevoltJson.encodeToJsonElement(ListSerializer(String.serializer()), remove) } - val response = RevoltHttp.patch("/users/@me") { + val response = RevoltHttp.patch("/users/@me".api()) { contentType(ContentType.Application.Json) setBody( RevoltJson.encodeToString( @@ -111,7 +112,7 @@ suspend fun patchSelf( } suspend fun fetchUser(id: String): User { - val res = RevoltHttp.get("/users/$id") + val res = RevoltHttp.get("/users/$id".api()) if (res.status.value == 404) { return User.getPlaceholder(id) @@ -146,7 +147,7 @@ suspend fun addUserIfUnknown(id: String) { } suspend fun fetchUserProfile(id: String): Profile { - val res = RevoltHttp.get("/users/$id/profile") + val res = RevoltHttp.get("/users/$id/profile".api()) val response = res.bodyAsText() diff --git a/app/src/main/java/chat/revolt/screens/SplashScreen.kt b/app/src/main/java/chat/revolt/screens/SplashScreen.kt index 878bf3b0..6708eecf 100644 --- a/app/src/main/java/chat/revolt/screens/SplashScreen.kt +++ b/app/src/main/java/chat/revolt/screens/SplashScreen.kt @@ -33,6 +33,7 @@ import androidx.navigation.NavController import chat.revolt.R import chat.revolt.api.RevoltAPI import chat.revolt.api.RevoltHttp +import chat.revolt.api.api import chat.revolt.api.routes.onboard.needsOnboarding import chat.revolt.components.screens.splash.DisconnectedScreen import chat.revolt.persistence.KVStorage @@ -82,7 +83,7 @@ class SplashScreenViewModel @Inject constructor( } private suspend fun canReachRevolt(): Boolean { - val res = RevoltHttp.get("/") + val res = RevoltHttp.get("/".api()) return res.status.value == 200 }