diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeChannelLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeChannelLinkHandlerFactory.java index 8d858f89d..13b06959b 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeChannelLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeChannelLinkHandlerFactory.java @@ -5,6 +5,8 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory; import org.schabi.newpipe.extractor.utils.Parser; +import java.net.MalformedURLException; +import java.net.URL; import java.util.List; public final class PeertubeChannelLinkHandlerFactory extends ListLinkHandlerFactory { @@ -51,8 +53,13 @@ public final class PeertubeChannelLinkHandlerFactory extends ListLinkHandlerFact @Override public boolean onAcceptUrl(final String url) { - return url.contains("/accounts/") || url.contains("/a/") - || url.contains("/video-channels/") || url.contains("/c/"); + try { + new URL(url); + return url.contains("/accounts/") || url.contains("/a/") + || url.contains("/video-channels/") || url.contains("/c/"); + } catch (final MalformedURLException e) { + return false; + } } /** diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeCommentsLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeCommentsLinkHandlerFactory.java index 816bcb183..0371ae7d0 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeCommentsLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeCommentsLinkHandlerFactory.java @@ -5,6 +5,8 @@ import org.schabi.newpipe.extractor.exceptions.FoundAdException; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory; +import java.net.MalformedURLException; +import java.net.URL; import java.util.List; public final class PeertubeCommentsLinkHandlerFactory extends ListLinkHandlerFactory { @@ -27,7 +29,12 @@ public final class PeertubeCommentsLinkHandlerFactory extends ListLinkHandlerFac @Override public boolean onAcceptUrl(final String url) throws FoundAdException { - return url.contains("/videos/") || url.contains("/w/"); + try { + new URL(url); + return url.contains("/videos/") || url.contains("/w/"); + } catch (final MalformedURLException e) { + return false; + } } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubePlaylistLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubePlaylistLinkHandlerFactory.java index c6183b140..a33f62792 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubePlaylistLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubePlaylistLinkHandlerFactory.java @@ -6,6 +6,8 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory; import org.schabi.newpipe.extractor.utils.Parser; +import java.net.MalformedURLException; +import java.net.URL; import java.util.List; public final class PeertubePlaylistLinkHandlerFactory extends ListLinkHandlerFactory { @@ -52,9 +54,10 @@ public final class PeertubePlaylistLinkHandlerFactory extends ListLinkHandlerFac @Override public boolean onAcceptUrl(final String url) { try { + new URL(url); getId(url); return true; - } catch (final ParsingException e) { + } catch (final ParsingException | MalformedURLException e) { return false; } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeStreamLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeStreamLinkHandlerFactory.java index 6bc2ffa12..355c8f39e 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeStreamLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeStreamLinkHandlerFactory.java @@ -6,6 +6,9 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory; import org.schabi.newpipe.extractor.utils.Parser; +import java.net.MalformedURLException; +import java.net.URL; + public final class PeertubeStreamLinkHandlerFactory extends LinkHandlerFactory { private static final PeertubeStreamLinkHandlerFactory INSTANCE @@ -47,9 +50,10 @@ public final class PeertubeStreamLinkHandlerFactory extends LinkHandlerFactory { return false; } try { + new URL(url); getId(url); return true; - } catch (final ParsingException e) { + } catch (final ParsingException | MalformedURLException e) { return false; } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeTrendingLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeTrendingLinkHandlerFactory.java index e8d3481c0..f5211c581 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeTrendingLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeTrendingLinkHandlerFactory.java @@ -4,6 +4,8 @@ import org.schabi.newpipe.extractor.ServiceList; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory; +import java.net.MalformedURLException; +import java.net.URL; import java.util.List; import java.util.Map; @@ -69,8 +71,13 @@ public final class PeertubeTrendingLinkHandlerFactory extends ListLinkHandlerFac @Override public boolean onAcceptUrl(final String url) { - return url.contains("/videos?") || url.contains("/videos/trending") - || url.contains("/videos/most-liked") || url.contains("/videos/recently-added") - || url.contains("/videos/local"); + try { + new URL(url); + return url.contains("/videos?") || url.contains("/videos/trending") + || url.contains("/videos/most-liked") || url.contains("/videos/recently-added") + || url.contains("/videos/local"); + } catch (final MalformedURLException e) { + return false; + } } } diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelLinkHandlerFactoryTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelLinkHandlerFactoryTest.java index 1a0e424e1..51f91539c 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelLinkHandlerFactoryTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelLinkHandlerFactoryTest.java @@ -7,9 +7,9 @@ import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeChannelLinkHandlerFactory; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; import static org.schabi.newpipe.extractor.ServiceList.PeerTube; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeLinkHandlerFactoryTestHelper.testDoNotAcceptNonURLs; /** * Test for {@link PeertubeChannelLinkHandlerFactory} @@ -33,6 +33,8 @@ public class PeertubeChannelLinkHandlerFactoryTest { assertTrue(linkHandler.acceptUrl("https://peertube.stream/video-channels/kranti_channel@videos.squat.net/videos")); assertTrue(linkHandler.acceptUrl("https://peertube.stream/c/kranti_channel@videos.squat.net/videos")); assertTrue(linkHandler.acceptUrl("https://peertube.stream/api/v1/video-channels/7682d9f2-07be-4622-862e-93ec812e2ffa")); + + testDoNotAcceptNonURLs(linkHandler); } @Test diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeCommentsLinkHandlerFactoryTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeCommentsLinkHandlerFactoryTest.java index 0a6da3376..b9f92411c 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeCommentsLinkHandlerFactoryTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeCommentsLinkHandlerFactoryTest.java @@ -9,6 +9,7 @@ import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeCommen import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeLinkHandlerFactoryTestHelper.testDoNotAcceptNonURLs; /** * Test for {@link PeertubeCommentsLinkHandlerFactory} @@ -31,6 +32,8 @@ public class PeertubeCommentsLinkHandlerFactoryTest { assertTrue(linkHandler.acceptUrl("https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d")); assertTrue(linkHandler.acceptUrl("https://framatube.org/w/9c9de5e8-0a1e-484a-b099-e80766180a6d")); assertTrue(linkHandler.acceptUrl("https://framatube.org/api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180a6d/comment-threads?start=0&count=10&sort=-createdAt")); + + testDoNotAcceptNonURLs(linkHandler); } @Test diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeLinkHandlerFactoryTestHelper.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeLinkHandlerFactoryTestHelper.java new file mode 100644 index 000000000..68328c588 --- /dev/null +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeLinkHandlerFactoryTestHelper.java @@ -0,0 +1,40 @@ +package org.schabi.newpipe.extractor.services.peertube; + +import org.schabi.newpipe.extractor.exceptions.ParsingException; +import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory; +import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory; + +import static org.junit.jupiter.api.Assertions.assertFalse; + +public class PeertubeLinkHandlerFactoryTestHelper { + + public static void testDoNotAcceptNonURLs(LinkHandlerFactory linkHandler) + throws ParsingException { + assertFalse(linkHandler.acceptUrl("orchestr/a/")); + assertFalse(linkHandler.acceptUrl("/a/")); + assertFalse(linkHandler.acceptUrl("something/c/")); + assertFalse(linkHandler.acceptUrl("/c/")); + assertFalse(linkHandler.acceptUrl("videos/")); + assertFalse(linkHandler.acceptUrl("I-hate-videos/")); + assertFalse(linkHandler.acceptUrl("/w/")); + assertFalse(linkHandler.acceptUrl("ksmg/w/")); + assertFalse(linkHandler.acceptUrl("a reandom search query")); + assertFalse(linkHandler.acceptUrl("test 230 ")); + assertFalse(linkHandler.acceptUrl("986513")); + } + + public static void testDoNotAcceptNonURLs(ListLinkHandlerFactory linkHandler) + throws ParsingException { + assertFalse(linkHandler.acceptUrl("orchestr/a/")); + assertFalse(linkHandler.acceptUrl("/a/")); + assertFalse(linkHandler.acceptUrl("something/c/")); + assertFalse(linkHandler.acceptUrl("/c/")); + assertFalse(linkHandler.acceptUrl("videos/")); + assertFalse(linkHandler.acceptUrl("I-hate-videos/")); + assertFalse(linkHandler.acceptUrl("/w/")); + assertFalse(linkHandler.acceptUrl("ksmg/w/")); + assertFalse(linkHandler.acceptUrl("a reandom search query")); + assertFalse(linkHandler.acceptUrl("test 230 ")); + assertFalse(linkHandler.acceptUrl("986513")); + } +} diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubePlaylistLinkHandlerFactoryTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubePlaylistLinkHandlerFactoryTest.java index ffab55d7f..8db0c8086 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubePlaylistLinkHandlerFactoryTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubePlaylistLinkHandlerFactoryTest.java @@ -10,6 +10,7 @@ import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubePlayli import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeLinkHandlerFactoryTestHelper.testDoNotAcceptNonURLs; /** * Test for {@link PeertubePlaylistLinkHandlerFactory} @@ -33,6 +34,8 @@ public class PeertubePlaylistLinkHandlerFactoryTest { assertTrue(linkHandler.acceptUrl("https://framatube.org/w/p/dacdc4ef-5160-4846-9b70-a655880da667")); assertTrue(linkHandler.acceptUrl("https://framatube.org/videos/watch/playlist/96b0ee2b-a5a7-4794-8769-58d8ccb79ab7")); assertTrue(linkHandler.acceptUrl("https://framatube.org/w/p/96b0ee2b-a5a7-4794-8769-58d8ccb79ab7")); + + testDoNotAcceptNonURLs(linkHandler); } @Test diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamLinkHandlerFactoryTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamLinkHandlerFactoryTest.java index 53c8502a5..cfc656801 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamLinkHandlerFactoryTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamLinkHandlerFactoryTest.java @@ -9,6 +9,7 @@ import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeStream import static org.junit.jupiter.api.Assertions.*; import static org.schabi.newpipe.extractor.ServiceList.PeerTube; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeLinkHandlerFactoryTestHelper.testDoNotAcceptNonURLs; /** * Test for {@link PeertubeStreamLinkHandlerFactory} @@ -71,5 +72,7 @@ public class PeertubeStreamLinkHandlerFactoryTest { // make sure playlists aren't accepted assertFalse(linkHandler.acceptUrl("https://framatube.org/w/p/dacdc4ef-5160-4846-9b70-a655880da667")); assertFalse(linkHandler.acceptUrl("https://framatube.org/videos/watch/playlist/dacdc4ef-5160-4846-9b70-a655880da667")); + + PeertubeLinkHandlerFactoryTestHelper.testDoNotAcceptNonURLs(linkHandler); } } diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeTrendingLinkHandlerFactoryTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeTrendingLinkHandlerFactoryTest.java index 4c140f5de..ff42a4d00 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeTrendingLinkHandlerFactoryTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeTrendingLinkHandlerFactoryTest.java @@ -11,6 +11,7 @@ import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeTrendi import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.schabi.newpipe.extractor.ServiceList.PeerTube; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeLinkHandlerFactoryTestHelper.testDoNotAcceptNonURLs; /** * Test for {@link PeertubeTrendingLinkHandlerFactory} @@ -57,5 +58,7 @@ public class PeertubeTrendingLinkHandlerFactoryTest { assertTrue(LinkHandlerFactory.acceptUrl("https://peertube.mastodon.host/videos/local")); assertTrue(LinkHandlerFactory.acceptUrl("https://peertube.mastodon.host/videos/local?adsf=fjaj#fhe")); + + PeertubeLinkHandlerFactoryTestHelper.testDoNotAcceptNonURLs(LinkHandlerFactory); } }