diff options
Diffstat (limited to 'core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java b/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java index 7e3870a20..dbdb37c3b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java @@ -1,10 +1,16 @@ package de.danoeh.antennapod.core.util; import android.net.Uri; +import android.text.TextUtils; import androidx.annotation.NonNull; import android.util.Log; import de.danoeh.antennapod.core.BuildConfig; +import okhttp3.HttpUrl; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; /** * Provides methods for checking and editing a URL. @@ -78,4 +84,45 @@ public final class URLChecker { return prepareURL(url); } } + + public static boolean containsUrl(List<String> list, String url) { + for (String item : list) { + if (urlEquals(item, url)) { + return true; + } + } + return false; + } + + public static boolean urlEquals(String string1, String string2) { + HttpUrl url1 = HttpUrl.parse(string1); + HttpUrl url2 = HttpUrl.parse(string2); + if (!url1.host().equals(url2.host())) { + return false; + } + List<String> pathSegments1 = normalizePathSegments(url1.pathSegments()); + List<String> pathSegments2 = normalizePathSegments(url2.pathSegments()); + if (!pathSegments1.equals(pathSegments2)) { + return false; + } + if (TextUtils.isEmpty(url1.query())) { + return TextUtils.isEmpty(url2.query()); + } + return url1.query().equals(url2.query()); + } + + /** + * Removes empty segments and converts all to lower case. + * @param input List of path segments + * @return Normalized list of path segments + */ + private static List<String> normalizePathSegments(List<String> input) { + List<String> result = new ArrayList<>(); + for (String string : input) { + if (!TextUtils.isEmpty(string)) { + result.add(string.toLowerCase()); + } + } + return result; + } } |