Skip to content

Commit a74f6ad

Browse files
committed
feat: add gzip support, send UA containing version
1 parent 8b3250b commit a74f6ad

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

src/main/java/com/browserstack/local/Local.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class Local {
2323
private LocalProcess proc = null;
2424

2525
// Current version of binding package, used for --source option of binary
26-
private final String packageVersion = "1.1.4";
26+
private static final String packageVersion = "1.1.4";
2727
private final Map<String, String> parameters;
2828
private final Map<String, String> avoidValueParameters;
2929

@@ -130,6 +130,15 @@ public boolean isRunning() throws Exception {
130130
return isProcessRunning(pid);
131131
}
132132

133+
/**
134+
* Returns the package version
135+
*
136+
* @return {String} package version
137+
*/
138+
public static String getPackageVersion() {
139+
return packageVersion;
140+
}
141+
133142
/**
134143
* Creates a list of command-line arguments for the Local instance
135144
*

src/main/java/com/browserstack/local/LocalBinary.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@
22

33
import org.apache.commons.io.FileUtils;
44
import java.io.IOException;
5+
import java.io.InputStream;
56
import java.io.BufferedReader;
67
import java.io.InputStreamReader;
78
import java.io.File;
89
import java.net.URL;
10+
import java.net.URLConnection;
911
import java.util.regex.Pattern;
12+
import java.util.zip.GZIPInputStream;
13+
import java.util.zip.ZipException;
1014

1115
class LocalBinary {
1216

@@ -174,7 +178,7 @@ private void downloadBinary(String destParentDir, Boolean custom) throws LocalEx
174178
URL url = new URL(httpPath);
175179

176180
File f = new File(source);
177-
FileUtils.copyURLToFile(url, f);
181+
newCopyToFile(url, f);
178182

179183
changePermissions(binaryPath);
180184
} catch (Exception e) {
@@ -192,4 +196,22 @@ private void changePermissions(String path) {
192196
public String getBinaryPath() {
193197
return binaryPath;
194198
}
199+
200+
private static void newCopyToFile(URL url, File f) throws IOException {
201+
URLConnection conn = url.openConnection();
202+
conn.setRequestProperty("User-Agent", "browserstack-local-java/" + Local.getPackageVersion());
203+
conn.setRequestProperty("Accept-Encoding", "gzip, *");
204+
String contentEncoding = conn.getContentEncoding();
205+
206+
if (contentEncoding == null || !contentEncoding.toLowerCase().contains("gzip")) {
207+
FileUtils.copyToFile(conn.getInputStream(), f);
208+
return;
209+
}
210+
211+
try (InputStream stream = new GZIPInputStream(conn.getInputStream())) {
212+
FileUtils.copyToFile(stream, f);
213+
} catch (ZipException e) {
214+
FileUtils.copyURLToFile(url, f);
215+
}
216+
}
195217
}

0 commit comments

Comments
 (0)