refactor user agent (#13775)

* refactor user agent

* use `userAgent()` method to set user agent

* add param `fallbackStr`
This commit is contained in:
Md. Touhidur Rahman 2025-08-07 01:24:39 +06:00 committed by GitHub
parent 876dffe4c5
commit 9216c13df8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 24 additions and 32 deletions

View File

@ -6,6 +6,8 @@ import com.badlogic.gdx.Gdx
import com.badlogic.gdx.Input
import com.badlogic.gdx.Screen
import com.badlogic.gdx.scenes.scene2d.actions.Actions
import com.unciv.UncivGame.Companion.Current
import com.unciv.UncivGame.Companion.isCurrentInitialized
import com.unciv.logic.GameInfo
import com.unciv.logic.IsPartOfGameInfoSerialization
import com.unciv.logic.UncivShowableException
@ -504,6 +506,11 @@ open class UncivGame(val isConsoleMode: Boolean = false) : Game(), PlatformSpeci
@Readonly fun getGameInfoOrNull() = if (isCurrentInitialized()) Current.gameInfo else null
@Readonly fun isCurrentGame(gameId: String): Boolean = isCurrentInitialized() && Current.gameInfo != null && Current.gameInfo!!.gameId == gameId
@Readonly fun isDeepLinkedGameLoading() = isCurrentInitialized() && Current.deepLinkedMultiplayerGame != null
@Readonly
fun getUserAgent(fallbackStr: String = "Unknown"): String = if (isCurrentInitialized()) {
"Unciv/${VERSION.toNiceString()}-GNU-Terry-Pratchett"
} else "Unciv/$fallbackStr-GNU-Terry-Pratchett"
}
data class Version(

View File

@ -4,29 +4,17 @@ import com.unciv.UncivGame
import com.unciv.logic.UncivShowableException
import com.unciv.utils.Concurrency
import com.unciv.utils.Log
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.engine.cio.CIO
import io.ktor.client.plugins.HttpSend
import io.ktor.client.plugins.HttpTimeout
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.plugins.defaultRequest
import io.ktor.client.plugins.plugin
import io.ktor.client.plugins.websocket.ClientWebSocketSession
import io.ktor.client.plugins.websocket.WebSockets
import io.ktor.client.plugins.websocket.cio.webSocketRawSession
import io.ktor.client.request.get
import io.ktor.http.DEFAULT_PORT
import io.ktor.http.ParametersBuilder
import io.ktor.http.URLBuilder
import io.ktor.http.URLProtocol
import io.ktor.http.Url
import io.ktor.http.appendPathSegments
import io.ktor.http.encodedPath
import io.ktor.http.isSecure
import io.ktor.http.userAgent
import io.ktor.serialization.kotlinx.KotlinxWebsocketSerializationConverter
import io.ktor.serialization.kotlinx.json.json
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.*
import io.ktor.client.plugins.contentnegotiation.*
import io.ktor.client.plugins.websocket.*
import io.ktor.client.plugins.websocket.cio.*
import io.ktor.client.request.*
import io.ktor.http.*
import io.ktor.serialization.kotlinx.*
import io.ktor.serialization.kotlinx.json.*
import kotlinx.coroutines.Job
import kotlinx.coroutines.coroutineScope
import kotlinx.serialization.SerializationException
@ -84,7 +72,7 @@ open class ApiV2Wrapper(baseUrl: String) {
init {
client.plugin(HttpSend).intercept { request ->
request.userAgent("Unciv/${UncivGame.VERSION.toNiceString()}-GNU-Terry-Pratchett")
request.userAgent(UncivGame.getUserAgent("Multiplayer-v2"))
val clientCall = try {
execute(request)
} catch (t: Throwable) {

View File

@ -168,6 +168,7 @@ object ChatWebSocket {
session?.close()
session = client.webSocketSession {
url(getChatUrl())
userAgent(UncivGame.getUserAgent("Chat"))
header(
HttpHeaders.Authorization,
UncivGame.Current.settings.multiplayer.getAuthHeader()
@ -191,8 +192,7 @@ object ChatWebSocket {
is Response.Chat -> ChatStore.relayChatMessage(response)
is Response.Error -> ChatStore.relayGlobalMessage(
"Error: [${response.message}]",
"Server"
"Error: [${response.message}]", "Server"
)
is Response.JoinSuccess -> Unit // TODO

View File

@ -4,6 +4,7 @@ import com.badlogic.gdx.Net
import com.unciv.UncivGame
import com.unciv.utils.Log
import com.unciv.utils.debug
import io.ktor.http.*
import java.io.BufferedReader
import java.io.DataOutputStream
import java.io.InputStreamReader
@ -12,7 +13,6 @@ import java.net.HttpURLConnection
import java.net.InetAddress
import java.net.URI
import java.net.URL
import java.nio.charset.Charset
private typealias SendRequestCallback = (success: Boolean, result: String, code: Int?)->Unit
@ -38,11 +38,8 @@ object SimpleHttp {
requestMethod = method // default is GET
connectTimeout = timeout
instanceFollowRedirects = true
if (UncivGame.isCurrentInitialized())
setRequestProperty("User-Agent", "Unciv/${UncivGame.VERSION.toNiceString()}-GNU-Terry-Pratchett")
else
setRequestProperty("User-Agent", "Unciv/Turn-Checker-GNU-Terry-Pratchett")
setRequestProperty("Content-Type", "text/plain")
setRequestProperty(HttpHeaders.UserAgent, UncivGame.getUserAgent("Turn-Checker"))
setRequestProperty(HttpHeaders.ContentType, "text/plain")
for ((key, value) in header.orEmpty()) {
setRequestProperty(key, value)