blob: d776cfa01551d7f8f4555cf35d47c6252baffbf8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
package at.hannibal2.skyhanni.utils
import at.hannibal2.skyhanni.SkyHanniMod
import com.google.gson.JsonObject
import com.google.gson.JsonParser
import com.google.gson.JsonSyntaxException
import org.apache.http.client.config.RequestConfig
import org.apache.http.client.methods.HttpGet
import org.apache.http.impl.client.HttpClientBuilder
import org.apache.http.impl.client.HttpClients
import org.apache.http.message.BasicHeader
import org.apache.http.util.EntityUtils
import java.io.BufferedReader
import java.io.File
import java.io.FileInputStream
import java.io.InputStreamReader
import java.nio.charset.StandardCharsets
object APIUtil {
private val parser = JsonParser()
val builder: HttpClientBuilder =
HttpClients.custom().setUserAgent("SkyHanni/${SkyHanniMod.VERSION}")
.setDefaultHeaders(
mutableListOf(
BasicHeader("Pragma", "no-cache"),
BasicHeader("Cache-Control", "no-cache")
)
)
.setDefaultRequestConfig(
RequestConfig.custom()
.build()
)
.useSystemProperties()
fun getJSONResponse(urlString: String, silentError: Boolean = false): JsonObject {
val client = builder.build()
try {
client.execute(HttpGet(urlString)).use { response ->
val entity = response.entity
if (entity != null) {
val retSrc = EntityUtils.toString(entity)
try {
return parser.parse(retSrc) as JsonObject
} catch (e: JsonSyntaxException) {
if (retSrc.contains("<center><h1>502 Bad Gateway</h1></center>")) {
println("502 Bad Gateway at getJSONResponse '$urlString'")
LorenzUtils.error("[SkyHanni] Hypixel API error: 502 Bad Gateway!")
} else {
println("JsonSyntaxException at getJSONResponse '$urlString'")
LorenzUtils.error("[SkyHanni] JsonSyntaxException at getJSONResponse!")
println("result: '$retSrc'")
}
e.printStackTrace()
}
}
}
} catch (throwable: Throwable) {
if (silentError) {
throw throwable
} else {
throwable.printStackTrace()
LorenzUtils.error("SkyHanni ran into an ${throwable::class.simpleName ?: "error"} whilst fetching a resource. See logs for more details.")
}
} finally {
client.close()
}
return JsonObject()
}
fun readFile(file: File): BufferedReader {
return BufferedReader(InputStreamReader(FileInputStream(file), StandardCharsets.UTF_8))
}
}
|