package com.cedricblondeau.webpage2html.http; import com.cedricblondeau.webpage2html.Configuration; import com.cedricblondeau.webpage2html.http.resource.HttpResource; import com.cedricblondeau.webpage2html.http.resource.HttpResponseResource; import com.squareup.okhttp.ResponseBody; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.logging.Level; import java.util.logging.Logger; public final class HttpResourceFactory { private static final Logger logger = Logger.getLogger(HttpResourceFactory.class.getName()); private Configuration configuration; public HttpResourceFactory(Configuration configuration) { this.configuration = configuration; } public HttpResource get(String resourceUrl, URL baseURL) { // Validate URL URL url; try { url = new URL(baseURL, resourceUrl); } catch (MalformedURLException e) { logger.log(Level.WARNING, e.getMessage()); return null; } // Get HttpResource try { HttpResource httpResource; if (HttpCache.getInstance().has(url.toExternalForm())) { httpResource = (HttpResource) HttpCache.getInstance().get(url.toExternalForm()); } else { HttpRequest httpRequest = new HttpRequest(url, configuration); ResponseBody responseBody = httpRequest.execute().body(); httpResource = new HttpResponseResource(responseBody, url); } return httpResource; } catch (IOException e) { logger.log(Level.SEVERE, e.getMessage()); return null; } } }