X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Fstates%2FTorrentState.java;h=98578eba7dcca7870567a13c96bac38e0a414185;hb=75dffc0a110405807d5e6a6dd9e0815299d894ad;hp=c0ba68aefddc029e12bbf6ce9835eb835d31716d;hpb=e756bd3f340862312390820f52d080b54ec389af;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/rhynodge/states/TorrentState.java b/src/main/java/net/pterodactylus/rhynodge/states/TorrentState.java index c0ba68a..98578eb 100644 --- a/src/main/java/net/pterodactylus/rhynodge/states/TorrentState.java +++ b/src/main/java/net/pterodactylus/rhynodge/states/TorrentState.java @@ -22,6 +22,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Optional; import net.pterodactylus.rhynodge.State; import net.pterodactylus.rhynodge.states.TorrentState.TorrentFile; @@ -65,6 +66,11 @@ public class TorrentState extends AbstractState implements Iterable // ACCESSORS // + @Override + public boolean isEmpty() { + return files.isEmpty(); + } + /** * Returns all torrent files of this state. * @@ -266,11 +272,7 @@ public class TorrentState extends AbstractState implements Iterable */ private String generateId() { if (magnetUri != null) { - String id = extractId(magnetUri); - if (id != null) { - return id; - } - return magnetUri; + return extractId(magnetUri).orElse(magnetUri); } return (downloadUri != null) ? downloadUri : name; } @@ -286,14 +288,17 @@ public class TorrentState extends AbstractState implements Iterable * The magnet URI to extract the “xt” from * @return The extracted ID, or {@code null} if no ID could be found */ - private static String extractId(String magnetUri) { + private static Optional extractId(String magnetUri) { + if ((magnetUri == null) || (magnetUri.length() < 8)) { + return Optional.empty(); + } List parameters = URLEncodedUtils.parse(magnetUri.substring("magnet:?".length()), Charset.forName("UTF-8")); for (NameValuePair parameter : parameters) { if (parameter.getName().equals("xt")) { - return parameter.getValue().toLowerCase(); + return Optional.of(parameter.getValue().toLowerCase()); } } - return null; + return Optional.empty(); } //