⁠
kyle wood: Use Modrinth API for Architectury creator
This also improves handling of coroutines in some places, and it also
fixes weird Minecraft version strings being URL encoded from
DataProvider for Fabric, which is what fixes #1847 .
I wanted to use a coroutine-compatible HTTP library, so I pulled in fuel
and it seems to work fine. I kept support for configured proxies as
well, but I don't really have a way of testing that.
Fixes #1892
Fixes #1847
This also improves handling of coroutines in some places, and it also
fixes weird Minecraft version strings being URL encoded from
DataProvider for Fabric, which is what fixes #1847 .
I wanted to use a coroutine-compatible HTTP library, so I pulled in fuel
and it seems to work fine. I kept support for configured proxies as
well, but I don't really have a way of testing that.
Fixes #1892
Fixes #1847
- /*
- * Minecraft Dev for IntelliJ
- *
- * https://minecraftdev.org
- *
- * Copyright (c) 2022 minecraft-dev
- *
- * MIT License
- */
- package com.demonwav.mcdev.platform.liteloader.version
- import com.demonwav.mcdev.util.SemanticVersion
- import com.demonwav.mcdev.util.fromJson
- import com.demonwav.mcdev.util.sortVersions
- import com.google.gson.Gson
- import java.io.IOException
- import java.net.URL
- class LiteLoaderVersion private constructor(private var map: Map<*, *>) {
- val sortedMcVersions: List<SemanticVersion> by lazy {
- val mcVersion = map["versions"] as Map<*, *>
- @Suppress("UNCHECKED_CAST")
- val keys = mcVersion.keys as Collection<String>
- return@lazy sortVersions(keys)
- }
- companion object {
- fun downloadData(): LiteLoaderVersion? {
- try {
- val text = URL("http://dl.liteloader.com/versions/versions.json").readText()
- val map = Gson().fromJson<Map<*, *>>(text)
- val liteLoaderVersion = LiteLoaderVersion(map)
- liteLoaderVersion.sortedMcVersions
- return liteLoaderVersion
- } catch (e: IOException) {
- e.printStackTrace()
- }
- return null
- }
- }
- }
- /*
- * Minecraft Dev for IntelliJ
- *
- * https://minecraftdev.org
- *
- * Copyright (c) 2022 minecraft-dev
- *
- * MIT License
- */
- package com.demonwav.mcdev.platform.liteloader.version
- import com.demonwav.mcdev.creator.selectProxy
- import com.demonwav.mcdev.update.PluginUtil
- import com.demonwav.mcdev.util.SemanticVersion
- import com.demonwav.mcdev.util.fromJson
- import com.demonwav.mcdev.util.sortVersions
- import com.github.kittinunf.fuel.core.FuelManager
- import com.github.kittinunf.fuel.core.requests.suspendable
- import com.github.kittinunf.fuel.coroutines.awaitString
- import com.google.gson.Gson
- import com.intellij.openapi.diagnostic.Logger
- import java.io.IOException
- class LiteLoaderVersion private constructor(private var map: Map<*, *>) {
- val sortedMcVersions: List<SemanticVersion> by lazy {
- val mcVersion = map["versions"] as Map<*, *>
- @Suppress("UNCHECKED_CAST")
- val keys = mcVersion.keys as Collection<String>
- return@lazy sortVersions(keys)
- }
- companion object {
- private val LOGGER = Logger.getInstance(LiteLoaderVersion::class.java)
- suspend fun downloadData(): LiteLoaderVersion? {
- try {
- val url = "https://dl.liteloader.com/versions/versions.json"
- val manager = FuelManager()
- manager.proxy = selectProxy(url)
- val text = manager.get(url)
- .header("User-Agent", PluginUtil.useragent)
- .suspendable()
- .awaitString()
- val map = Gson().fromJson<Map<*, *>>(text)
- val liteLoaderVersion = LiteLoaderVersion(map)
- liteLoaderVersion.sortedMcVersions
- return liteLoaderVersion
- } catch (e: IOException) {
- LOGGER.error("Failed to download LiteLoader version json", e)
- }
- return null
- }
- }
- }