X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Farachne%2Fcore%2FURLFetcher.java;h=0b4cb47abbf9ed95f996f68f6bbba88b39200950;hb=6c8cff3cb5a52300d182a30286a53b4ec12059db;hp=8f8465dbbde9f49d15df0feaa13739e490a56530;hpb=8102ef3404b97d753d8166bd0f995745907d43a5;p=arachne.git diff --git a/src/net/pterodactylus/arachne/core/URLFetcher.java b/src/net/pterodactylus/arachne/core/URLFetcher.java index 8f8465d..0b4cb47 100644 --- a/src/net/pterodactylus/arachne/core/URLFetcher.java +++ b/src/net/pterodactylus/arachne/core/URLFetcher.java @@ -1,11 +1,15 @@ package net.pterodactylus.arachne.core; import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.logging.Level; import java.util.logging.Logger; +import net.pterodactylus.arachne.parser.HtmlEditorKitParser; +import net.pterodactylus.arachne.parser.ParserListener; import de.ina.util.validation.Validation; /** @@ -14,7 +18,7 @@ import de.ina.util.validation.Validation; * * @author David ‘Bombe’ Roden */ -class URLFetcher implements Runnable { +class URLFetcher implements Runnable, ParserListener { /** The logger. */ private static final Logger logger = Logger.getLogger(URLFetcher.class.getName()); @@ -51,9 +55,36 @@ class URLFetcher implements Runnable { long contentLength = urlConnection.getContentLength(); String contentType = urlConnection.getContentType(); logger.log(Level.INFO, "Type is “" + contentType + "”, length is " + contentLength + "."); + HtmlEditorKitParser htmlEditorKitParser = new HtmlEditorKitParser(); + htmlEditorKitParser.parse(this, urlConnection.getInputStream(), "UTF-8"); } catch (IOException ioe1) { logger.log(Level.WARNING, "Could not fetch “" + url + "”.", ioe1); } } + // + // INTERFACE ParserListener + // + + /** + * {@inheritDoc} + */ + public void parsedLink(InputStream inputStream, String linkTarget, String linkTitle, String linkText) { + URL newLink = null; + try { + newLink = new URL(url, linkTarget); + core.addPage(newLink); + } catch (MalformedURLException mue1) { + logger.log(Level.WARNING, "Could not create URL from “" + url + "” and “" + linkTarget + "”.", mue1); + } catch (IllegalArgumentException iae1) { + logger.log(Level.WARNING, "Could not add “" + newLink + "” to core queue.", iae1); + } + } + + /** + * {@inheritDoc} + */ + public void parsedTitle(InputStream inputStream, String title) { + } + }