package me.pbox.pkg;
import me.pbox.env.Environment;
import me.pbox.env.Sources;
import me.pbox.http.HttpUtil;
import me.pbox.xml.XmlUtil;
import java.io.File;
import java.io.IOException;
/**
* @author Mike Mirzayanov (mirzayanovmr@gmail.com)
*/
public class PkgUtil {
public static String getPboxXmlUrl(String source, Pkg pkg) {
return String.format("%s/%s/%s/pbox.xml",
source, Environment.getVersion(), pkg.getName());
}
public static String getPbox7zUrl(String source, Pkg pkg) {
return String.format("%s/%s/%s/%s/%s.pbox.7z",
source, Environment.getVersion(), pkg.getName(), pkg.getVersion(), pkg);
}
public static File findPboxXmlFile(Pkg pkg) {
for (String source : Sources.getList()) {
String url = getPboxXmlUrl(source, pkg);
File result = HttpUtil.getTemporaryFile(url);
if (result != null) {
return result;
}
}
return null;
}
public static File findPbox7zFile(Pkg pkg) {
for (String source : Sources.getList()) {
String url = getPbox7zUrl(source, pkg);
File result = HttpUtil.getTemporaryFile(url);
if (result != null) {
return result;
}
}
return null;
}
public static String findLatestVersion(Pkg pkg) {
for (String source : Sources.getList()) {
String url = getPboxXmlUrl(source, pkg);
File pboxXmlFile = HttpUtil.getTemporaryFile(url);
if (pboxXmlFile != null) {
try {
return XmlUtil.extractFromXml(pboxXmlFile, "/pbox/version", String.class);
} catch (IOException e) {
throw new RuntimeException("Can't find `version` in " + pboxXmlFile + ".");
}
}
}
return null;
}
}