From 2e41ee0b356fd709739f3d9c5fe5e7d6ca4da7d6 Mon Sep 17 00:00:00 2001 From: soloturn Date: Thu, 15 Jun 2023 14:24:07 +0200 Subject: [PATCH] sanitizeURL can throw URISyntaxException. --- .../java/com/rarchives/ripme/ripper/AbstractHTMLRipper.java | 2 +- .../java/com/rarchives/ripme/ripper/AbstractRipper.java | 6 +++++- .../java/com/rarchives/ripme/ripper/RipperInterface.java | 2 +- .../com/rarchives/ripme/ripper/rippers/FlickrRipper.java | 6 ++++-- .../com/rarchives/ripme/ripper/rippers/LusciousRipper.java | 3 ++- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/rarchives/ripme/ripper/AbstractHTMLRipper.java b/src/main/java/com/rarchives/ripme/ripper/AbstractHTMLRipper.java index 122c0ffe..e5d09b8e 100644 --- a/src/main/java/com/rarchives/ripme/ripper/AbstractHTMLRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/AbstractHTMLRipper.java @@ -73,7 +73,7 @@ public abstract class AbstractHTMLRipper extends AbstractRipper { } @Override - public URL sanitizeURL(URL url) throws MalformedURLException { + public URL sanitizeURL(URL url) throws MalformedURLException, URISyntaxException { return url; } protected boolean hasDescriptionSupport() { diff --git a/src/main/java/com/rarchives/ripme/ripper/AbstractRipper.java b/src/main/java/com/rarchives/ripme/ripper/AbstractRipper.java index ff47174a..5772eb85 100644 --- a/src/main/java/com/rarchives/ripme/ripper/AbstractRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/AbstractRipper.java @@ -172,7 +172,11 @@ public abstract class AbstractRipper if (!canRip(url)) { throw new MalformedURLException("Unable to rip url: " + url); } - this.url = sanitizeURL(url); + try { + this.url = sanitizeURL(url); + } catch (URISyntaxException e) { + throw new MalformedURLException(e.getMessage()); + } } /** diff --git a/src/main/java/com/rarchives/ripme/ripper/RipperInterface.java b/src/main/java/com/rarchives/ripme/ripper/RipperInterface.java index 63d48917..cc994549 100644 --- a/src/main/java/com/rarchives/ripme/ripper/RipperInterface.java +++ b/src/main/java/com/rarchives/ripme/ripper/RipperInterface.java @@ -14,7 +14,7 @@ import java.net.URL; interface RipperInterface { void rip() throws IOException, URISyntaxException; boolean canRip(URL url); - URL sanitizeURL(URL url) throws MalformedURLException; + URL sanitizeURL(URL url) throws MalformedURLException, URISyntaxException; void setWorkingDir(URL url) throws IOException; String getHost(); String getGID(URL url) throws MalformedURLException; diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/FlickrRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/FlickrRipper.java index 901a857c..f33c079e 100644 --- a/src/main/java/com/rarchives/ripme/ripper/rippers/FlickrRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/FlickrRipper.java @@ -2,6 +2,8 @@ package com.rarchives.ripme.ripper.rippers; import java.io.IOException; import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.util.*; import java.util.regex.Matcher; @@ -62,7 +64,7 @@ public class FlickrRipper extends AbstractHTMLRipper { } @Override - public URL sanitizeURL(URL url) throws MalformedURLException { + public URL sanitizeURL(URL url) throws MalformedURLException, URISyntaxException { String sUrl = url.toExternalForm(); // Strip out https sUrl = sUrl.replace("https://secure.flickr.com", "http://www.flickr.com"); @@ -73,7 +75,7 @@ public class FlickrRipper extends AbstractHTMLRipper { } sUrl += "pool"; } - return new URL(sUrl); + return new URI(sUrl).toURL(); } // FLickr is one of those sites what includes a api key in sites javascript // TODO let the user provide their own api key diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/LusciousRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/LusciousRipper.java index 277c5ff0..930eb38d 100644 --- a/src/main/java/com/rarchives/ripme/ripper/rippers/LusciousRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/LusciousRipper.java @@ -9,6 +9,7 @@ import org.jsoup.select.Elements; import java.io.IOException; import java.net.MalformedURLException; +import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.List; @@ -84,7 +85,7 @@ public class LusciousRipper extends AbstractHTMLRipper { } @Override - public URL sanitizeURL(URL url) throws MalformedURLException { + public URL sanitizeURL(URL url) throws MalformedURLException, URISyntaxException { // Sanitizes the url removing GET parameters and convert to legacy api url. // "https://legacy.luscious.net/albums/albumname" try {