Skip to content

Commit 10e69c9

Browse files
committed
Now add individual headers
Support for adding multiple headers at a time instead of a bunch at once. Additional headers appear in the HAR now. Changed REST API
1 parent b880180 commit 10e69c9

File tree

3 files changed

+29
-19
lines changed

3 files changed

+29
-19
lines changed

src/main/java/org/browsermob/proxy/ProxyServer.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,10 @@ public void whitelistRequests(String[] patterns, int responseCode) {
180180
client.whitelistRequests(patterns, responseCode);
181181
}
182182

183+
public void addHeader(String name, String value) {
184+
client.addHeader(name, value);
185+
}
186+
183187
public void setCaptureHeaders(boolean captureHeaders) {
184188
client.setCaptureHeaders(captureHeaders);
185189
}

src/main/java/org/browsermob/proxy/bricks/ProxyResource.java

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.browsermob.proxy.bricks;
22

3-
import com.google.common.collect.Multimap;
43
import com.google.inject.Inject;
54
import com.google.inject.name.Named;
65
import com.google.sitebricks.At;
@@ -20,7 +19,6 @@
2019
import org.apache.http.HttpRequest;
2120

2221
import java.util.Hashtable;
23-
import java.util.Iterator;
2422
import java.util.Set;
2523
import java.util.List;
2624

@@ -116,24 +114,14 @@ public Reply<?> whitelist(@Named("port") int port, Request request) {
116114
}
117115

118116
@Put
119-
@At("/:port/headers")
120-
public Reply<?> headers(@Named("port") int port, Request request) {
117+
@At("/:port/addHeader")
118+
public Reply<?> addHeader(@Named("port") int port, Request request) {
121119
ProxyServer proxy = proxyManager.get(port);
122-
final Multimap headers = request.params();
123-
proxy.addRequestInterceptor(new HttpRequestInterceptor() {
124-
@Override
125-
public void process(HttpRequest request, HttpContext context) {
126-
Set keySet = headers.keySet();
127-
Iterator keyIterator = keySet.iterator();
128-
while (keyIterator.hasNext() ) {
129-
String key = (String) keyIterator.next();
130-
List values = (List) headers.get(key);
131-
String value = (String) values.get(0);
132-
request.removeHeaders(key);
133-
request.addHeader(key, value);
134-
}
135-
}
136-
});
120+
String header = request.param("header");
121+
String[] temp = header.split(":", 2);
122+
String name = temp[0];
123+
String value = temp[1];
124+
proxy.addHeader(name, value);
137125
return Reply.saying().ok();
138126
}
139127

src/main/java/org/browsermob/proxy/http/BrowserMobHttpClient.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import java.net.URISyntaxException;
1010
import java.util.Date;
1111
import java.util.HashSet;
12+
import java.util.HashMap;
13+
import java.util.Map;
1214
import java.util.List;
1315
import java.util.Set;
1416
import java.util.concurrent.CopyOnWriteArrayList;
@@ -109,6 +111,7 @@ public class BrowserMobHttpClient {
109111
private List<BlacklistEntry> blacklistEntries = null;
110112
private WhitelistEntry whitelistEntry = null;
111113
private List<RewriteRule> rewriteRules = new CopyOnWriteArrayList<RewriteRule>();
114+
private HashMap<String, String> additionalHeaders = new HashMap();
112115
private int requestTimeout;
113116
private AtomicBoolean allowNewRequests = new AtomicBoolean(true);
114117
private BrowserMobHostNameResolver hostNameResolver;
@@ -470,6 +473,17 @@ private BrowserMobHttpResponse execute(BrowserMobHttpRequest req, int depth) {
470473
}
471474
}
472475

476+
if (!additionalHeaders.isEmpty()) {
477+
// Set the additional headers
478+
for (Map.Entry<String, String> entry : additionalHeaders.entrySet()) {
479+
String key = entry.getKey();
480+
String value = entry.getValue();
481+
method.removeHeaders(key);
482+
method.addHeader(key, value);
483+
}
484+
}
485+
486+
473487
String charSet = "UTF-8";
474488
String responseBody = null;
475489

@@ -904,6 +918,10 @@ public void whitelistRequests(String[] patterns, int responseCode) {
904918
whitelistEntry = new WhitelistEntry(patterns, responseCode);
905919
}
906920

921+
public void addHeader(String name, String value) {
922+
additionalHeaders.put(name, value);
923+
}
924+
907925
public void prepareForBrowser() {
908926
//save request and reponse cookies to the context
909927
httpClient.addRequestInterceptor(new RequestCookiesInterceptor());

0 commit comments

Comments
 (0)