Add forceDownload key in PackMetaUnloaded (allows using it in configs) which allows bypassing the caching behaviour

This commit is contained in:
JFronny 2021-03-03 08:14:52 +01:00
parent 239a8ff856
commit a0207bb153
No known key found for this signature in database
GPG Key ID: BEC5ACBBD4EE17E5
6 changed files with 22 additions and 14 deletions

View File

@ -6,7 +6,7 @@ minecraft_version=1.16.5
yarn_mappings=1.16.5+build.4 yarn_mappings=1.16.5+build.4
loader_version=0.11.1 loader_version=0.11.1
# Mod Properties # Mod Properties
mod_version=1.3.0 mod_version=1.4.0
maven_group=io.gitlab.jfronny maven_group=io.gitlab.jfronny
archives_base_name=resclone archives_base_name=resclone
# Dependencies # Dependencies

View File

@ -63,7 +63,12 @@ public class Resclone implements ModInitializer, RescloneApi {
@Override @Override
public void addPack(String fetcher, String pack, String name) { public void addPack(String fetcher, String pack, String name) {
conf.add(new PackMetaUnloaded(fetcher, pack, name)); addPack(fetcher, pack, name, false);
}
@Override
public void addPack(String fetcher, String pack, String name, boolean forceRedownload) {
conf.add(new PackMetaUnloaded(fetcher, pack, name, forceRedownload));
} }
@Override @Override
@ -79,7 +84,7 @@ public class Resclone implements ModInitializer, RescloneApi {
PackMetaLoaded p; PackMetaLoaded p;
try { try {
//Download //Download
PackFetcher.FetcherResult fr = fetcherInstances.get(s.fetcher).get(s.source, cacheDir); PackFetcher.Result fr = fetcherInstances.get(s.fetcher).get(s.source, cacheDir, s.forceDownload);
p = new PackMetaLoaded(fr.downloadPath, s.name); p = new PackMetaLoaded(fr.downloadPath, s.name);
metas.add(p); metas.add(p);
if (fr.freshDownload) { if (fr.freshDownload) {

View File

@ -9,6 +9,7 @@ public interface RescloneApi {
void addFetcher(PackFetcher fetcher); void addFetcher(PackFetcher fetcher);
void addProcessor(PackProcessor processor); void addProcessor(PackProcessor processor);
void addPack(String fetcher, String pack, String name); void addPack(String fetcher, String pack, String name);
void addPack(String fetcher, String pack, String name, boolean forceRedownload);
void reload(); void reload();
Path getConfigPath(); Path getConfigPath();
} }

View File

@ -25,7 +25,7 @@ public class ConfigLoader {
} }
Set<PackMetaUnloaded> data = Resclone.gson.fromJson(text.toString(), new TypeToken<Set<PackMetaUnloaded>>(){}.getType()); Set<PackMetaUnloaded> data = Resclone.gson.fromJson(text.toString(), new TypeToken<Set<PackMetaUnloaded>>(){}.getType());
for (PackMetaUnloaded meta : data) { for (PackMetaUnloaded meta : data) {
api.addPack(meta.fetcher, meta.source, meta.name); api.addPack(meta.fetcher, meta.source, meta.name, meta.forceDownload);
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -1,13 +1,15 @@
package io.gitlab.jfronny.resclone.data; package io.gitlab.jfronny.resclone.data;
public class PackMetaUnloaded { public class PackMetaUnloaded {
public String fetcher; public final String fetcher;
public String source; public final String source;
public String name; public final String name;
public final boolean forceDownload;
public PackMetaUnloaded(String fetcher, String source, String name) { public PackMetaUnloaded(String fetcher, String source, String name, boolean forceDownload) {
this.fetcher = fetcher; this.fetcher = fetcher;
this.source = source; this.source = source;
this.name = name; this.name = name;
this.forceDownload = forceDownload;
} }
} }

View File

@ -48,7 +48,7 @@ public abstract class PackFetcher {
return gson.fromJson(readStringFromURL(requestUrl), TypeToken.getParameterized(Set.class, classOfT).getType()); return gson.fromJson(readStringFromURL(requestUrl), TypeToken.getParameterized(Set.class, classOfT).getType());
} }
public FetcherResult get(String baseUrl, Path targetDir) throws RescloneException { public Result get(String baseUrl, Path targetDir, boolean forceDownload) throws RescloneException {
String url; String url;
try { try {
url = getDownloadUrl(baseUrl); url = getDownloadUrl(baseUrl);
@ -64,8 +64,8 @@ public abstract class PackFetcher {
} }
} }
Path p = targetDir.resolve(Integer.toHexString(url.hashCode())); Path p = targetDir.resolve(Integer.toHexString(url.hashCode()));
if (Files.exists(p)) if (!forceDownload && Files.exists(p))
return new FetcherResult(p, false); return new Result(p, false);
System.out.println("Downloading pack " + url); System.out.println("Downloading pack " + url);
try (InputStream is = new URL(url).openStream()) { try (InputStream is = new URL(url).openStream()) {
FileOutputStream os = new FileOutputStream(p.toFile()); FileOutputStream os = new FileOutputStream(p.toFile());
@ -79,14 +79,14 @@ public abstract class PackFetcher {
catch (Throwable e) { catch (Throwable e) {
throw new RescloneException("Could not download pack", e); throw new RescloneException("Could not download pack", e);
} }
return new FetcherResult(p, true); return new Result(p, true);
} }
public class FetcherResult { public class Result {
public final Path downloadPath; public final Path downloadPath;
public final boolean freshDownload; public final boolean freshDownload;
public FetcherResult(Path downloadPath, boolean freshDownload) { public Result(Path downloadPath, boolean freshDownload) {
this.downloadPath = downloadPath; this.downloadPath = downloadPath;
this.freshDownload = freshDownload; this.freshDownload = freshDownload;
} }