37 lines
1.3 KiB
Java
37 lines
1.3 KiB
Java
package io.gitlab.jfronny.respackopts.filters.conditions;
|
|
|
|
import io.gitlab.jfronny.libjf.data.ResourcePath;
|
|
import io.gitlab.jfronny.libjf.data.WrappedPack;
|
|
import io.gitlab.jfronny.respackopts.Respackopts;
|
|
import io.gitlab.jfronny.respackopts.data.Rpo;
|
|
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.io.Reader;
|
|
|
|
public class ResourcePackFilter {
|
|
public static boolean fileHidden(WrappedPack pack, String name) {
|
|
if (name.endsWith(Respackopts.FILE_EXTENSION))
|
|
return false;
|
|
ResourcePath rpoPath;
|
|
try {
|
|
rpoPath = new ResourcePath(name + Respackopts.FILE_EXTENSION);
|
|
if (!pack.contains(rpoPath.getType(), rpoPath.getId()))
|
|
return false;
|
|
} catch (Throwable e) {
|
|
Respackopts.LOGGER.error("Could not check file filter status", e);
|
|
return false;
|
|
}
|
|
try (InputStream stream = pack.open(rpoPath.getType(), rpoPath.getId()); Reader w = new InputStreamReader(stream)) {
|
|
Rpo rpo = Respackopts.GSON.fromJson(w, Rpo.class);
|
|
if (rpo.conditions == null)
|
|
return false;
|
|
return !ConditionEvaluator.evaluate(rpo.conditions);
|
|
}
|
|
catch (Throwable e) {
|
|
Respackopts.LOGGER.error("Could not load RPO file " + name, e);
|
|
return false;
|
|
}
|
|
}
|
|
}
|