X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2Fhighlevel%2FFcpClient.java;h=7364aa8a01ce58c44b5114c38fb7f1673f9175e7;hb=572802370f7dff98b690df85b79e256335e28b33;hp=dee33c3e2708e38e82cdc63c0f234a8fa627a716;hpb=3d9879f268ac491cfc7ce8d6e3030f75ff2cdd44;p=jFCPlib.git diff --git a/src/main/java/net/pterodactylus/fcp/highlevel/FcpClient.java b/src/main/java/net/pterodactylus/fcp/highlevel/FcpClient.java index dee33c3..7364aa8 100644 --- a/src/main/java/net/pterodactylus/fcp/highlevel/FcpClient.java +++ b/src/main/java/net/pterodactylus/fcp/highlevel/FcpClient.java @@ -18,6 +18,7 @@ package net.pterodactylus.fcp.highlevel; +import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; @@ -78,7 +79,7 @@ import net.pterodactylus.util.thread.ObjectWrapper; * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> */ -public class FcpClient { +public class FcpClient implements Closeable { /** Object used for synchronization. */ private final Object syncObject = new Object(); @@ -306,7 +307,8 @@ public class FcpClient { } /** - * Returns the file with the given URI. + * Returns the file with the given URI. The retrieved data will be run + * through Freenet’s content filter. * * @param uri * The URI to get @@ -317,6 +319,24 @@ public class FcpClient { * if an FCP error occurs */ public GetResult getURI(final String uri) throws IOException, FcpException { + return getURI(uri, true); + } + + /** + * Returns the file with the given URI. + * + * @param uri + * The URI to get + * @param filterData + * {@code true} to filter the retrieved data, {@code false} + * otherwise + * @return The result of the get request + * @throws IOException + * if an I/O error occurs + * @throws FcpException + * if an FCP error occurs + */ + public GetResult getURI(final String uri, final boolean filterData) throws IOException, FcpException { checkConnected(true); final GetResult getResult = new GetResult(); new ExtendedFcpAdapter() { @@ -328,6 +348,7 @@ public class FcpClient { @SuppressWarnings("synthetic-access") public void run() throws IOException { ClientGet clientGet = new ClientGet(uri, identifier); + clientGet.setFilterData(filterData); fcpConnection.sendMessage(clientGet); } @@ -336,12 +357,14 @@ public class FcpClient { if (!getFailed.getIdentifier().equals(identifier)) { return; } - if (getFailed.getCode() == 27) { + if ((getFailed.getCode() == 27) || (getFailed.getCode() == 24)) { /* redirect! */ String newUri = getFailed.getRedirectURI(); getResult.realUri(newUri); try { - fcpConnection.sendMessage(new ClientGet(newUri, identifier)); + ClientGet clientGet = new ClientGet(newUri, identifier); + clientGet.setFilterData(filterData); + fcpConnection.sendMessage(clientGet); } catch (IOException ioe1) { getResult.success(false).exception(ioe1); completionLatch.countDown(); @@ -382,6 +405,14 @@ public class FcpClient { } /** + * {@inheritDoc} + */ + @Override + public void close() { + disconnect(); + } + + /** * Returns whether this client is currently connected. * * @return {@code true} if the client is currently connected, {@code false} @@ -844,6 +875,7 @@ public class FcpClient { /** * {@inheritDoc} */ + @Override public boolean filterObject(Request request) { return request instanceof GetRequest; } @@ -869,6 +901,7 @@ public class FcpClient { /** * {@inheritDoc} */ + @Override public boolean filterObject(Request request) { return request instanceof PutRequest; }