@@ -19,6 +19,7 @@ import com.github.kittinunf.fuel.core.requests.suspendable
1919import com.github.kittinunf.fuel.coroutines.awaitString
2020import com.google.gson.Gson
2121import com.google.gson.annotations.SerializedName
22+ import com.intellij.openapi.diagnostic.logger
2223import java.io.IOException
2324
2425class ArchitecturyVersion private constructor(
@@ -44,37 +45,43 @@ class ArchitecturyVersion private constructor(
4445 )
4546
4647 companion object {
48+ private val LOGGER = logger<ArchitecturyVersion >()
4749
48- suspend fun downloadData (): ArchitecturyVersion {
49- val url = " https://api.modrinth.com/v2/project/architectury-api/version"
50- val manager = FuelManager ()
51- manager.proxy = selectProxy(url)
50+ suspend fun downloadData (): ArchitecturyVersion ? {
51+ try {
52+ val url = " https://api.modrinth.com/v2/project/architectury-api/version"
53+ val manager = FuelManager ()
54+ manager.proxy = selectProxy(url)
5255
53- val response = manager.get(url)
54- .header(" User-Agent" , PluginUtil .useragent)
55- .suspendable()
56- .awaitString()
56+ val response = manager.get(url)
57+ .header(" User-Agent" , PluginUtil .useragent)
58+ .suspendable()
59+ .awaitString()
5760
58- val data = Gson ().fromJson<List <ModrinthVersionApi >>(response)
61+ val data = Gson ().fromJson<List <ModrinthVersionApi >>(response)
5962
60- val apiVersionMap = HashMap <SemanticVersion , HashSet <SemanticVersion >>()
63+ val apiVersionMap = HashMap <SemanticVersion , HashSet <SemanticVersion >>()
6164
62- for (version in data) {
63- val apiVersion = SemanticVersion .parse(version.versionNumber.substringBeforeLast(' +' ))
65+ for (version in data) {
66+ val apiVersion = SemanticVersion .parse(version.versionNumber.substringBeforeLast(' +' ))
6467
65- for (gameVersion in version.gameVersions) {
66- val parsed = SemanticVersion .parse(gameVersion)
67- val set = apiVersionMap.computeIfAbsent(parsed) { HashSet () }
68- set + = apiVersion
68+ for (gameVersion in version.gameVersions) {
69+ val parsed = SemanticVersion .parse(gameVersion)
70+ val set = apiVersionMap.computeIfAbsent(parsed) { HashSet () }
71+ set + = apiVersion
72+ }
6973 }
70- }
7174
72- val apiVersionMapList = HashMap <SemanticVersion , List <SemanticVersion >>()
73- for ((mcVersion, archList) in apiVersionMap.entries) {
74- apiVersionMapList[mcVersion] = archList.sortedDescending()
75- }
75+ val apiVersionMapList = HashMap <SemanticVersion , List <SemanticVersion >>()
76+ for ((mcVersion, archList) in apiVersionMap.entries) {
77+ apiVersionMapList[mcVersion] = archList.sortedDescending()
78+ }
7679
77- return ArchitecturyVersion (apiVersionMapList)
80+ return ArchitecturyVersion (apiVersionMapList)
81+ } catch (e: IOException ) {
82+ LOGGER .error(" Failed to retrieve Architectury version data" , e)
83+ }
84+ return null
7885 }
7986 }
8087}
0 commit comments