From: David ‘Bombe’ Roden Date: Wed, 26 Aug 2015 09:19:53 +0000 (+0200) Subject: Don’t assume we always have a magnet URI X-Git-Tag: v2~169 X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=6125075d3d16aa8d233382a60d3dcdfefeffc7c7;p=rhynodge.git Don’t assume we always have a magnet URI --- diff --git a/src/main/java/net/pterodactylus/rhynodge/states/TorrentState.java b/src/main/java/net/pterodactylus/rhynodge/states/TorrentState.java index 48ac228..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; @@ -271,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; } @@ -291,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(); } //