package co.forsaken.projectindigo.utils.technic;
import java.util.ArrayList;
import java.util.HashMap;
import co.forsaken.api.json.JsonWebCall;
import co.forsaken.projectindigo.data.Mod;
import co.forsaken.projectindigo.data.Mod.ModType;
import co.forsaken.projectindigo.data.Server;
import co.forsaken.projectindigo.log.LogManager;
import co.forsaken.projectindigo.utils.ServerLoader;
import co.forsaken.projectindigo.utils.technic.tokens.ModpackToken;
public class TechnicServerLoader extends ServerLoader {
private ModpackToken token;
public TechnicServerLoader(Server _server) {
super(_server, true);
}
private ModpackToken getModpackInfo(String url) {
if (token == null) {
try {
token = new JsonWebCall(url).executeGet(ModpackToken.class, false);
} catch (Exception e) {
LogManager.error("Could not connect to " + url + "... Maybe its down?");
}
}
return token;
}
@Override public boolean load(Server server) {
return loadPack(server);
}
private boolean loadPack(Server server) {
ModpackToken token = getModpackInfo(server.getToken().modpackRefName);
if (token == null) { return false; }
server.setDesc(token.description);
server.setUrl(token.platformUrl);
server.setModList(new HashMap<String, Mod>());
for (Mod m : getMojangLibraries(server, token.minecraft)) {
server.getModList().put(m.getName(), m);
}
server.getModList().put("server_download", new Mod("server_download", new ArrayList<String>(), MOJANG_DOWNLOAD_BASE + "versions/" + token.minecraft + "/" + token.minecraft + ".jar", "", ModType.minecraft));
return true;
}
public String getDownloadUrl(Server server) {
if (token == null) {
LogManager.error("Could not connect to " + server.getToken().modpackRefName + "... Maybe its down?");
return null;
}
return token.url;
}
public String getDownloadUrl(Server server, String modname) {
return null;
}
}