Resclone/src/main/java/io/gitlab/jfronny/resclone/fetchers/CurseforgeFetcher.java

49 lines
1.7 KiB
Java
Raw Normal View History

2020-12-29 16:14:53 +01:00
package io.gitlab.jfronny.resclone.fetchers;
2021-02-19 12:39:22 +01:00
import io.gitlab.jfronny.resclone.data.CfAddon;
2020-12-29 16:14:53 +01:00
import io.gitlab.jfronny.resclone.data.RescloneException;
2021-02-19 12:39:22 +01:00
import net.minecraft.MinecraftVersion;
import java.text.SimpleDateFormat;
import java.util.Date;
2020-12-29 16:14:53 +01:00
public class CurseforgeFetcher extends PackFetcher {
@Override
public String getSourceTypeName() {
return "curseforge";
}
@Override
public String getDownloadUrl(String baseUrl) throws RescloneException {
try {
2021-02-19 12:39:22 +01:00
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS'Z'");
String version = MinecraftVersion.field_25319.getName();
CfAddon latest = null;
Date latestDate = null;
boolean foundMatchingVersion = false;
for (CfAddon addon : readJsonFromURLSet("https://addons-ecs.forgesvc.net/api/v2/addon/" + baseUrl + "/files", CfAddon.class)) {
Date d = df.parse(addon.fileDate);
if (foundMatchingVersion && !addon.gameVersion.contains(version))
continue;
if (!foundMatchingVersion && addon.gameVersion.contains(version)) {
foundMatchingVersion = true;
latest = null;
}
if (latest == null || d.after(latestDate)) {
latest = addon;
latestDate = d;
}
}
if (!foundMatchingVersion)
System.err.println("Could not find pack for matching version, using latest");
return latest.downloadUrl;
2020-12-29 16:14:53 +01:00
} catch (Throwable e) {
2020-12-29 22:22:23 +01:00
throw new RescloneException("Could not get CF download for " + baseUrl, e);
2020-12-29 16:14:53 +01:00
}
}
}