@@ -60,6 +60,10 @@ private void downloadAndVerifyBinary(String path) throws LocalException {
60
60
checkBinary ();
61
61
} catch (Throwable e ) {
62
62
if (fallbackEnabled ) throw e ;
63
+ File binary_file = new File (binaryPath );
64
+ if (binary_file .exists ()) {
65
+ binary_file .delete ();
66
+ }
63
67
fallbackEnabled = true ;
64
68
downloadFailureThrowable = e ;
65
69
downloadAndVerifyBinary (path );
@@ -191,39 +195,46 @@ private boolean makePath(String path) {
191
195
}
192
196
}
193
197
194
- private void fetchSourceUrl () {
195
- if ((!fallbackEnabled && sourceUrl ) || (fallbackEnabled && ! downloadFailureThrowable )) {
198
+ private void fetchSourceUrl () throws LocalException {
199
+ if ((!fallbackEnabled && sourceUrl != null ) || (fallbackEnabled && downloadFailureThrowable == null )) {
196
200
/* Retry because binary (from any of the endpoints) validation failed */
197
201
return ;
198
202
}
199
203
200
- URL url = new URL ("https://local.browserstack.com/binary/api/v1/endpoint" );
201
- URLConnection connection = url .openConnection ();
202
-
203
- connection .setDoOutput (true );
204
- connection .setRequestProperty ("Content-Type" , "application/json" );
205
- connection .setRequestProperty ("User-Agent" , "browserstack-local-java/" + Local .getPackageVersion ());
206
- connection .setRequestProperty ("Accept" , "application/json" );
207
- if (fallbackEnabled ) connection .setRequestProperty ("X-Local-Fallback-Cloudflare" , "true" );
208
-
209
- String jsonInput = "{\" auth_token\" : " + key + (fallbackEnabled ? (", \" error_message\" : " + downloadFailureThrowable .getMessage ()) : "" ) + "}" ;
210
-
211
- try (OutputStream os = connection .getOutputStream ()) {
212
- byte [] input = jsonInput .getBytes ("utf-8" );
213
- os .write (input , 0 , input .length );
214
- }
215
-
216
- try (InputStream is = connection .getInputStream ();
217
- BufferedReader reader = new BufferedReader (new InputStreamReader (is , "utf-8" ))) {
218
- StringBuilder response = new StringBuilder ();
219
- String line ;
220
- while ((line = reader .readLine ()) != null ) {
221
- response .append (line .trim ());
222
- }
223
- String responseBody = response .toString ();
224
- JSONObject json = new JSONObject (responseBody );
225
- this .sourceUrl = json .getJSONObject ("data" ).getString ("endpoint" );
226
- if (fallbackEnabled ) downloadFailureThrowable = null ;
204
+ try {
205
+ URL url = new URL ("https://local.browserstack.com/binary/api/v1/endpoint" );
206
+ URLConnection connection = url .openConnection ();
207
+
208
+ connection .setDoOutput (true );
209
+ connection .setRequestProperty ("Content-Type" , "application/json" );
210
+ connection .setRequestProperty ("User-Agent" , "browserstack-local-java/" + Local .getPackageVersion ());
211
+ connection .setRequestProperty ("Accept" , "application/json" );
212
+ if (fallbackEnabled ) connection .setRequestProperty ("X-Local-Fallback-Cloudflare" , "true" );
213
+
214
+ String jsonInput = "{\" auth_token\" : \" " + key + (fallbackEnabled ? ("\" , \" error_message\" : \" " + downloadFailureThrowable .getMessage ()) + "\" " : "\" " ) + "}" ;
215
+
216
+ try (OutputStream os = connection .getOutputStream ()) {
217
+ byte [] input = jsonInput .getBytes ("utf-8" );
218
+ os .write (input , 0 , input .length );
219
+ }
220
+
221
+ try (InputStream is = connection .getInputStream ();
222
+ BufferedReader reader = new BufferedReader (new InputStreamReader (is , "utf-8" ))) {
223
+ StringBuilder response = new StringBuilder ();
224
+ String line ;
225
+ while ((line = reader .readLine ()) != null ) {
226
+ response .append (line .trim ());
227
+ }
228
+ String responseBody = response .toString ();
229
+ JSONObject json = new JSONObject (responseBody );
230
+ if (json .has ("error" )) {
231
+ throw new Exception (json .getString ("error" ));
232
+ }
233
+ this .sourceUrl = json .getJSONObject ("data" ).getString ("endpoint" );
234
+ if (fallbackEnabled ) downloadFailureThrowable = null ;
235
+ }
236
+ } catch (Throwable e ) {
237
+ throw new LocalException ("Error trying to fetch the source URL: " + e .getMessage ());
227
238
}
228
239
}
229
240
0 commit comments