Web admin app loads list of players
This commit is contained in:
@@ -1,117 +0,0 @@
|
||||
package dev.geekback.dopewars.desktop
|
||||
|
||||
import dev.geekback.dopewars.shared.Location
|
||||
import dev.geekback.dopewars.shared.Market
|
||||
import dev.geekback.dopewars.shared.Player
|
||||
import dev.geekback.dopewars.shared.api.PlayerNameUpdateRequest
|
||||
import dev.geekback.dopewars.shared.api.TravelRequest
|
||||
import dev.geekback.dopewars.shared.api.TravelResult
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.call.body
|
||||
import io.ktor.client.engine.cio.CIO
|
||||
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
|
||||
import io.ktor.client.request.get
|
||||
import io.ktor.client.request.post
|
||||
import io.ktor.client.request.setBody
|
||||
import io.ktor.client.statement.bodyAsText
|
||||
import io.ktor.http.ContentType
|
||||
import io.ktor.http.HttpStatusCode
|
||||
import io.ktor.http.contentType
|
||||
import io.ktor.serialization.kotlinx.json.json
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
/**
|
||||
* ApiClient
|
||||
*
|
||||
* Client for accessing the Dopewars API server
|
||||
*/
|
||||
class ApiClient() {
|
||||
private var address: String = ""
|
||||
private val client = HttpClient(CIO) {
|
||||
install(ContentNegotiation) {
|
||||
json(
|
||||
Json {
|
||||
allowSpecialFloatingPointValues = true
|
||||
ignoreUnknownKeys = true
|
||||
prettyPrint = true
|
||||
isLenient = true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fun new(address: String) {
|
||||
this.address = address
|
||||
}
|
||||
|
||||
/**
|
||||
* login
|
||||
*
|
||||
* Create a new game
|
||||
*/
|
||||
suspend fun login(baseUrl: String): Player {
|
||||
println("URL = [${baseUrl}/players]")
|
||||
val response = client.post(urlString = "$baseUrl/players") {
|
||||
contentType(ContentType.Application.Json)
|
||||
}
|
||||
|
||||
return if (response.status == HttpStatusCode.Created) {
|
||||
response.body()
|
||||
} else {
|
||||
println("Login fail. -> ${response.status}")
|
||||
Player(name = "Invalid Login Attempt", id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun market(forPlayer: Player): Market {
|
||||
val result: Market = client.get("${this.address}/market/${forPlayer.id}") {
|
||||
contentType(ContentType.Application.Json)
|
||||
}.body()
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
suspend fun rename(newName: String, player: Player): Player {
|
||||
val response = client.post("${this.address}/players/${player.id}/rename") {
|
||||
val newBody = PlayerNameUpdateRequest(newName)
|
||||
setBody(newBody)
|
||||
contentType(ContentType.Application.Json)
|
||||
}
|
||||
|
||||
return if (response.status == HttpStatusCode.OK) {
|
||||
val result: Player = response.body()
|
||||
println("Rename Success -> $result")
|
||||
result
|
||||
} else {
|
||||
println("Rename Fail -> ${response.status} / ${this.address}/players/${player.id}/rename")
|
||||
player
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun refreshPlayer(initialState: Player): Player {
|
||||
val response = client.get("${this.address}/players/${initialState.id}") {
|
||||
contentType(ContentType.Application.Json)
|
||||
}
|
||||
|
||||
return if (response.status == HttpStatusCode.OK) {
|
||||
val result: Player = response.body()
|
||||
println("Refresh Success -> $result")
|
||||
result
|
||||
} else {
|
||||
println("Refresh Failure")
|
||||
initialState
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun travel(baseUrl: String, playerId: String, destination: TravelRequest) {
|
||||
val response = client.post("$baseUrl/players/${playerId}/travel") {
|
||||
setBody(destination)
|
||||
contentType(ContentType.Application.Json)
|
||||
}
|
||||
|
||||
println("Travel result -> $response")
|
||||
}
|
||||
|
||||
// suspend fun travel(destination: Location): TravelResult {
|
||||
// val response = client.get("${this.address}/players/${this.player}")
|
||||
// }
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package dev.geekback.dopewars.desktop
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import dev.geekback.dopewars.shared.ApiClient
|
||||
import dev.geekback.dopewars.shared.Player
|
||||
import dev.geekback.dopewars.shared.api.TravelRequest
|
||||
|
||||
|
||||
Reference in New Issue
Block a user