mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-27 05:46:43 -04:00
SimpleHttp gets a connection timeout (#6812)
* SimpleHttp gets a connection timeout
This commit is contained in:
parent
1126a7c996
commit
0ced4d96e7
@ -8,25 +8,28 @@ import java.io.InputStreamReader
|
|||||||
import java.net.*
|
import java.net.*
|
||||||
import java.nio.charset.Charset
|
import java.nio.charset.Charset
|
||||||
|
|
||||||
|
private typealias SendRequestCallback = (success: Boolean, result: String, code: Int?)->Unit
|
||||||
|
|
||||||
object SimpleHttp {
|
object SimpleHttp {
|
||||||
fun sendGetRequest(url: String, action: (success: Boolean, result: String, code: Int?)->Unit) {
|
fun sendGetRequest(url: String, timeout: Int = 5000, action: SendRequestCallback) {
|
||||||
sendRequest(Net.HttpMethods.GET, url, "", action)
|
sendRequest(Net.HttpMethods.GET, url, "", timeout, action)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun sendRequest(method: String, url: String, content: String, action: (success: Boolean, result: String, code: Int?)->Unit) {
|
fun sendRequest(method: String, url: String, content: String, timeout: Int = 5000, action: SendRequestCallback) {
|
||||||
var uri = URI(url)
|
var uri = URI(url)
|
||||||
if (uri.host == null) uri = URI("http://$url")
|
if (uri.host == null) uri = URI("http://$url")
|
||||||
|
|
||||||
val urlObj: URL
|
val urlObj: URL
|
||||||
try {
|
try {
|
||||||
urlObj = uri.toURL()
|
urlObj = uri.toURL()
|
||||||
} catch (t:Throwable){
|
} catch (t: Throwable) {
|
||||||
action(false, "Bad URL", null)
|
action(false, "Bad URL", null)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
with(urlObj.openConnection() as HttpURLConnection) {
|
with(urlObj.openConnection() as HttpURLConnection) {
|
||||||
requestMethod = method // default is GET
|
requestMethod = method // default is GET
|
||||||
|
connectTimeout = timeout
|
||||||
if (UncivGame.isCurrentInitialized())
|
if (UncivGame.isCurrentInitialized())
|
||||||
setRequestProperty("User-Agent", "Unciv/${UncivGame.Current.version}-GNU-Terry-Pratchett")
|
setRequestProperty("User-Agent", "Unciv/${UncivGame.Current.version}-GNU-Terry-Pratchett")
|
||||||
else
|
else
|
||||||
|
@ -4,10 +4,10 @@ import com.badlogic.gdx.Net
|
|||||||
import java.io.FileNotFoundException
|
import java.io.FileNotFoundException
|
||||||
import java.lang.Exception
|
import java.lang.Exception
|
||||||
|
|
||||||
class UncivServerFileStorage(val serverUrl:String): FileStorage {
|
class UncivServerFileStorage(val serverUrl: String, val timeout: Int = 30000) : FileStorage {
|
||||||
override fun saveFileData(fileName: String, data: String, overwrite: Boolean) {
|
override fun saveFileData(fileName: String, data: String, overwrite: Boolean) {
|
||||||
SimpleHttp.sendRequest(Net.HttpMethods.PUT, "$serverUrl/files/$fileName", data) {
|
SimpleHttp.sendRequest(Net.HttpMethods.PUT, fileUrl(fileName), data, timeout) {
|
||||||
success, result, code ->
|
success, result, _ ->
|
||||||
if (!success) {
|
if (!success) {
|
||||||
println(result)
|
println(result)
|
||||||
throw Exception(result)
|
throw Exception(result)
|
||||||
@ -17,7 +17,7 @@ class UncivServerFileStorage(val serverUrl:String): FileStorage {
|
|||||||
|
|
||||||
override fun loadFileData(fileName: String): String {
|
override fun loadFileData(fileName: String): String {
|
||||||
var fileData = ""
|
var fileData = ""
|
||||||
SimpleHttp.sendGetRequest("$serverUrl/files/$fileName"){
|
SimpleHttp.sendGetRequest(fileUrl(fileName), timeout = timeout){
|
||||||
success, result, code ->
|
success, result, code ->
|
||||||
if (!success) {
|
if (!success) {
|
||||||
println(result)
|
println(result)
|
||||||
@ -37,7 +37,7 @@ class UncivServerFileStorage(val serverUrl:String): FileStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun deleteFile(fileName: String) {
|
override fun deleteFile(fileName: String) {
|
||||||
SimpleHttp.sendRequest(Net.HttpMethods.DELETE, "$serverUrl/files/$fileName", "") {
|
SimpleHttp.sendRequest(Net.HttpMethods.DELETE, fileUrl(fileName), "", timeout) {
|
||||||
success, result, code ->
|
success, result, code ->
|
||||||
if (!success) {
|
if (!success) {
|
||||||
when (code) {
|
when (code) {
|
||||||
@ -48,4 +48,5 @@ class UncivServerFileStorage(val serverUrl:String): FileStorage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun fileUrl(fileName: String) = "$serverUrl/files/$fileName"
|
||||||
}
|
}
|
||||||
|
@ -137,8 +137,15 @@ class OptionsPopup(
|
|||||||
(previousScreen.game.screen as BaseScreen).openOptionsPopup(tabs.activePage)
|
(previousScreen.game.screen as BaseScreen).openOptionsPopup(tabs.activePage)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun successfullyConnectedToServer(action: (Boolean, String, Int?) -> Unit){
|
private fun successfullyConnectedToServer(action: (Boolean) -> Unit) {
|
||||||
SimpleHttp.sendGetRequest("${settings.multiplayerServer}/isalive", action)
|
launchCrashHandling("TestIsAlive") {
|
||||||
|
SimpleHttp.sendGetRequest("${settings.multiplayerServer}/isalive") {
|
||||||
|
success, _, _ ->
|
||||||
|
postCrashHandlingRunnable {
|
||||||
|
action(success)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//region Page builders
|
//region Page builders
|
||||||
@ -307,7 +314,7 @@ class OptionsPopup(
|
|||||||
}
|
}
|
||||||
popup.open(true)
|
popup.open(true)
|
||||||
|
|
||||||
successfullyConnectedToServer { success, _, _ ->
|
successfullyConnectedToServer { success ->
|
||||||
popup.addGoodSizedLabel(if (success) "Success!" else "Failed!").row()
|
popup.addGoodSizedLabel(if (success) "Success!" else "Failed!").row()
|
||||||
popup.addCloseButton()
|
popup.addCloseButton()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user