Launcher/LaunchServer/src/main/java/ru/gravit/launchserver/manangers/MirrorManager.java

70 lines
1.9 KiB
Java

package ru.gravit.launchserver.manangers;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import ru.gravit.utils.helper.IOHelper;
public class MirrorManager {
public class Mirror {
URL url;
String assetsURLMask;
String clientsURLMask;
boolean enabled;
Mirror(String url) {
assetsURLMask = url.concat("assets/%s.zip");
clientsURLMask = url.concat("clients/%s.zip");
}
private URL formatArg(String mask, String arg) throws MalformedURLException {
return new URL(String.format(mask, IOHelper.urlEncode(arg)));
}
public URL getAssetsURL(String assets) throws MalformedURLException {
return formatArg(assetsURLMask, assets);
}
public URL getClientsURL(String client) throws MalformedURLException {
return formatArg(clientsURLMask, client);
}
}
protected ArrayList<Mirror> list = new ArrayList<>();
private Mirror defaultMirror;
public void addMirror(String mirror) throws MalformedURLException {
Mirror m = new Mirror(mirror);
m.enabled = true;
if (defaultMirror == null) defaultMirror = m;
}
public void addMirror(String mirror, boolean enabled) throws MalformedURLException {
Mirror m = new Mirror(mirror);
m.url = new URL(mirror);
m.enabled = enabled;
if (defaultMirror == null && enabled) defaultMirror = m;
}
public Mirror getDefaultMirror() {
return defaultMirror;
}
public void setDefaultMirror(Mirror m) {
defaultMirror = m;
}
public void disableMirror(int index) {
list.get(index).enabled = false;
}
public void enableMirror(int index) {
list.get(index).enabled = true;
}
public int size() {
return list.size();
}
}