package org.limewire.core.impl.magnet; import java.net.URI; import java.util.List; import org.limewire.core.api.magnet.MagnetLink; import com.limegroup.gnutella.URN; import com.limegroup.gnutella.browser.MagnetOptions; public class MagnetLinkImpl implements MagnetLink { private final MagnetOptions magnetOptions; public MagnetLinkImpl(MagnetOptions magnetOptions) { this.magnetOptions = magnetOptions; } @Override public boolean isGnutellaDownloadable() { return magnetOptions.isGnutellaDownloadable(); } @Override public boolean isTorrentDownloadable() { return magnetOptions.isTorrentDownloadable(); } @Override public boolean isKeywordTopicOnly() { return magnetOptions.isKeywordTopicOnly(); } public MagnetOptions getMagnetOptions() { return magnetOptions; } @Override public String getQueryString() { return magnetOptions.getQueryString(); } @Override public URN getURN() { return magnetOptions.getSHA1Urn(); } @Override public List<URI> getTrackerUrls() { return magnetOptions.getTrackers(); } @Override public String getName() { String name = magnetOptions.getDisplayName(); if (name == null) { name = magnetOptions.getFileNameForSaving(); } return sanatiseName(name); } /** * Strip any strange characters out of the name so it is appropriate for * naming files, etc. on all systems. */ private static String sanatiseName(String name) { // sha1 is the only offending name possible so far // replace it with the word magnet for now if (name.startsWith("urn:sha1:")) { return "Magnet " + name.substring(9); } return name; } }