From 42d42e9750a601dbfb6a9cd5f1621f946147b8e9 Mon Sep 17 00:00:00 2001 From: Yuhui Huang Date: Tue, 26 May 2020 17:19:55 +0800 Subject: [PATCH] fix: #619 --- .../hmcl/mod/curse/CurseCompletionTask.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseCompletionTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseCompletionTask.java index ac62aa2d8..ee29685e7 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseCompletionTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseCompletionTask.java @@ -118,30 +118,36 @@ public final class CurseCompletionTask extends Task { if (StringUtils.isBlank(file.getFileName())) { try { return file.withFileName(NetworkUtils.detectFileName(file.getUrl())); - } catch (FileNotFoundException e) { + } catch (IOException e) { try { String result = NetworkUtils.doGet(NetworkUtils.toURL(String.format("https://cursemeta.dries007.net/%d/%d.json", file.getProjectID(), file.getFileID()))); CurseMetaMod mod = JsonUtils.fromNonNullJson(result, CurseMetaMod.class); return file.withFileName(mod.getFileNameOnDisk()).withURL(mod.getDownloadURL()); + } catch (FileNotFoundException fof) { + Logging.LOG.log(Level.WARNING, "Could not query cursemeta for deleted mods: " + file.getUrl(), fof); + notFound.set(true); + return file; } catch (IOException | JsonParseException e2) { try { String result = NetworkUtils.doGet(NetworkUtils.toURL(String.format("https://addons-ecs.forgesvc.net/api/v2/addon/%d/file/%d", file.getProjectID(), file.getFileID()))); CurseMetaMod mod = JsonUtils.fromNonNullJson(result, CurseMetaMod.class); return file.withFileName(mod.getFileName()).withURL(mod.getDownloadURL()); - } catch (IOException | JsonParseException e3) { - Logging.LOG.log(Level.WARNING, "Could not query cursemeta for deleted mods: " + file.getUrl(), e2); + } catch (FileNotFoundException fof) { + Logging.LOG.log(Level.WARNING, "Could not query forgesvc for deleted mods: " + file.getUrl(), fof); notFound.set(true); return file; + } catch (IOException | JsonParseException e3) { + Logging.LOG.log(Level.WARNING, "Unable to fetch the file name of URL: " + file.getUrl(), e); + Logging.LOG.log(Level.WARNING, "Unable to fetch the file name of URL: " + file.getUrl(), e2); + Logging.LOG.log(Level.WARNING, "Unable to fetch the file name of URL: " + file.getUrl(), e3); + allNameKnown.set(false); + return file; } } - - } catch (IOException ioe) { - Logging.LOG.log(Level.WARNING, "Unable to fetch the file name of URL: " + file.getUrl(), ioe); - allNameKnown.set(false); - return file; } - } else + } else { return file; + } }) .collect(Collectors.toList())); FileUtils.writeText(new File(root, "manifest.json"), JsonUtils.GSON.toJson(newManifest));