X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneDownloader.java;h=a8d7deb0679b4a59db33e90ddf09d6b1c6eb0cc3;hb=358a9a2ab0ead0cc4dd86e3b97fa387ec958ec01;hp=8e9db39d555e5bd5390f93142e61c43c4c0b036b;hpb=69dae8af837896f0f8d932d7936bbf92e101f1e2;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java b/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java index 8e9db39..a8d7deb 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java @@ -37,6 +37,7 @@ import net.pterodactylus.util.xml.XML; import org.w3c.dom.Document; import freenet.client.FetchResult; +import freenet.keys.FreenetURI; import freenet.support.api.Bucket; /** @@ -109,9 +110,13 @@ public class SoneDownloader extends AbstractService { */ public void fetchSone(Sone sone) { logger.log(Level.FINE, "Starting fetch for Sone “%s” from %s…", new Object[] { sone, sone.getRequestUri().setMetaString(new String[] { "sone.xml" }) }); - FetchResult fetchResult = freenetInterface.fetchUri(sone.getRequestUri().setMetaString(new String[] { "sone.xml" })); + FreenetURI requestUri = sone.getRequestUri().setMetaString(new String[] { "sone.xml" }); + FetchResult fetchResult = freenetInterface.fetchUri(requestUri); logger.log(Level.FINEST, "Got %d bytes back.", fetchResult.size()); - parseSone(sone, fetchResult); + Sone parsedSone = parseSone(sone, fetchResult, requestUri); + if (parsedSone != null) { + core.addSone(parsedSone); + } } /** @@ -121,9 +126,11 @@ public class SoneDownloader extends AbstractService { * The sone to parse, or {@code null} if the Sone is yet unknown * @param fetchResult * The fetch result + * @param requestUri + * The requested URI * @return The parsed Sone, or {@code null} if the Sone could not be parsed */ - public Sone parseSone(Sone originalSone, FetchResult fetchResult) { + public Sone parseSone(Sone originalSone, FetchResult fetchResult, FreenetURI requestUri) { logger.log(Level.FINEST, "Persing FetchResult (%d bytes, %s) for %s…", new Object[] { fetchResult.size(), fetchResult.getMimeType(), originalSone }); /* TODO - impose a size limit? */ InputStream xmlInputStream = null; @@ -153,7 +160,7 @@ public class SoneDownloader extends AbstractService { /* load Sone from core. */ sone = originalSone; if (sone == null) { - sone = core.getSone(soneId); + sone = core.getSone(soneId).setRequestUri(requestUri.setMetaString(new String[] {})); } String soneName = soneXml.getValue("name", null);