From 86b0776c2db3255d6fb2471cd7b8f16b6ab60752 Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Mon, 16 May 2016 23:21:17 +0800 Subject: [PATCH] Support for logging response content via `-Dnet.filebot.web.WebRequest.log.response=true` --- source/net/filebot/CachedResource.java | 2 +- source/net/filebot/web/WebRequest.java | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/source/net/filebot/CachedResource.java b/source/net/filebot/CachedResource.java index 9fdd0b61..b75bf6cd 100644 --- a/source/net/filebot/CachedResource.java +++ b/source/net/filebot/CachedResource.java @@ -81,7 +81,7 @@ public class CachedResource implements Resource { try { ByteBuffer data = retry(() -> fetch.fetch(url, lastModified), retryLimit, retryWait); - debug.finest(format("Received %,d bytes", data == null ? 0 : data.remaining())); + debug.finest(WebRequest.log(data)); // 304 Not Modified if (data == null && element != null && element.getObjectValue() != null) { diff --git a/source/net/filebot/web/WebRequest.java b/source/net/filebot/web/WebRequest.java index be0f1960..0cb2e6c3 100644 --- a/source/net/filebot/web/WebRequest.java +++ b/source/net/filebot/web/WebRequest.java @@ -25,6 +25,7 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.Optional; @@ -53,6 +54,7 @@ import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import net.filebot.util.ByteBufferOutputStream; +import net.filebot.util.SystemProperty; public final class WebRequest { @@ -332,6 +334,25 @@ public final class WebRequest { }; } + public static Supplier log(ByteBuffer data) { + return () -> { + if (data == null) { + return "Received 0 bytes"; + } + + String log = String.format(Locale.ROOT, "Received %,d bytes", data.remaining()); + + // log entire response content if enabled + SystemProperty response = SystemProperty.of("net.filebot.web.WebRequest.log.response", Boolean::parseBoolean, Boolean.FALSE); + if (response.get()) { + return log + System.lineSeparator() + UTF_8.decode(data.duplicate()) + System.lineSeparator(); + } + + return log; + }; + + } + private WebRequest() { throw new UnsupportedOperationException(); }