diff --git a/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxy.java b/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxy.java index a04ffe7af..1fe7c28fe 100644 --- a/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxy.java +++ b/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxy.java @@ -598,6 +598,12 @@ public interface BrowserMobProxy { */ void addResponseFilter(ResponseFilter filter); + /** + * Adds a new ResponseFilter that can be used to examine and manipulate the response before sending it to the client. + * + * @param filter filter instance + */ + void addResponseFilterWithCustomBufferSize(ResponseFilter filter, int size); /** * Adds a new RequestFilter that can be used to examine and manipulate the request before sending it to the server. * diff --git a/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxyServer.java b/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxyServer.java index d4ddc5543..250c76adc 100644 --- a/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxyServer.java +++ b/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxyServer.java @@ -937,6 +937,16 @@ public void addResponseFilter(ResponseFilter filter) { addLastHttpFilterFactory(new ResponseFilterAdapter.FilterSource(filter)); } + /** + * Note: The current implementation of this method forces a maximum response size of 2 MiB. To adjust the maximum response size, or + * to disable aggregation (which disallows access to the {@link net.lightbody.bmp.util.HttpMessageContents}), you may add the filter source + * directly: addFirstHttpFilterFactory(new ResponseFilterAdapter.FilterSource(filter, bufferSizeInBytes)); + */ + @Override + public void addResponseFilterWithCustomBufferSize(ResponseFilter filter, int bufferSize) { + addLastHttpFilterFactory(new ResponseFilterAdapter.FilterSource(filter, bufferSize)); + } + /** * Note: The current implementation of this method forces a maximum request size of 2 MiB. To adjust the maximum request size, or * to disable aggregation (which disallows access to the {@link net.lightbody.bmp.util.HttpMessageContents}), you may add the filter source diff --git a/browsermob-legacy/src/main/java/net/lightbody/bmp/proxy/ProxyServer.java b/browsermob-legacy/src/main/java/net/lightbody/bmp/proxy/ProxyServer.java index 29c5f897f..29693d744 100644 --- a/browsermob-legacy/src/main/java/net/lightbody/bmp/proxy/ProxyServer.java +++ b/browsermob-legacy/src/main/java/net/lightbody/bmp/proxy/ProxyServer.java @@ -930,6 +930,11 @@ public void addResponseFilter(ResponseFilter filter) { LOG.warn("The legacy ProxyServer implementation does not support addRequestFilter and addResponseFilter. Use addRequestInterceptor/addResponseInterceptor instead."); } + @Override + public void addResponseFilterWithCustomBufferSize(ResponseFilter filter, int bufferSize) { + LOG.warn("The legacy ProxyServer implementation does not support addResquestFilterWithCustomBufferSize and addResponseFilterWithCustomBufferSize. Use addRequestInterceptor/addResponseInterceptor instead."); + } + @Override public void addRequestFilter(RequestFilter filter) { LOG.warn("The legacy ProxyServer implementation does not support addRequestFilter and addResponseFilter. Use addRequestInterceptor/addResponseInterceptor instead."); diff --git a/browsermob-rest/src/main/java/net/lightbody/bmp/proxy/bricks/ProxyResource.java b/browsermob-rest/src/main/java/net/lightbody/bmp/proxy/bricks/ProxyResource.java index 07654db32..d206d97e2 100644 --- a/browsermob-rest/src/main/java/net/lightbody/bmp/proxy/bricks/ProxyResource.java +++ b/browsermob-rest/src/main/java/net/lightbody/bmp/proxy/bricks/ProxyResource.java @@ -407,7 +407,17 @@ public Reply addResponseFilter(@Named("port") int port, Request reque String script = getEntityBodyFromRequest(request); requestResponseFilter.setResponseFilterScript(script); - proxy.addResponseFilter(requestResponseFilter); + String bufferSize = request.param("bufferSize"); + if (bufferSize != null && !bufferSize.isEmpty()) { + try { + proxy.addResponseFilterWithCustomBufferSize(requestResponseFilter, Integer.parseInt(bufferSize)); + } catch(Exception e) { + proxy.addResponseFilter(requestResponseFilter); + } + } + else { + proxy.addResponseFilter(requestResponseFilter); + } return Reply.saying().ok(); } diff --git a/pom.xml b/pom.xml index 02abf2bb5..e69911490 100644 --- a/pom.xml +++ b/pom.xml @@ -68,7 +68,7 @@ 3.0.2 - 2.9.0 + 2.16.0 2.4.12 2.4.3-01