Skip to content

Commit f7a517f

Browse files
authored
Download ChromeDriver MatchingBrowser version network error (#332)
* Added json file download timeout
1 parent a0ac88e commit f7a517f

File tree

3 files changed

+59
-2
lines changed

3 files changed

+59
-2
lines changed

WebDriverManager.Tests/ChromeConfigTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Text.RegularExpressions;
22
using WebDriverManager.DriverConfigs.Impl;
3+
using WebDriverManager.Helpers;
34
using Xunit;
45

56
namespace WebDriverManager.Tests
@@ -21,5 +22,13 @@ public void DriverDownloadLatestTest()
2122
new DriverManager().SetUpDriver(new ChromeConfig());
2223
Assert.NotEmpty(WebDriverFinder.FindFile(GetBinaryName()));
2324
}
25+
26+
[Fact]
27+
public void DriverDownloadTest()
28+
{
29+
new DriverManager().SetUpDriver(new ChromeConfig(), VersionResolveStrategy.MatchingBrowser);
30+
31+
Assert.NotEmpty(WebDriverFinder.FindFile(GetBinaryName()));
32+
}
2433
}
2534
}

WebDriverManager/Clients/ChromeForTestingClient.cs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
using System;
2+
using System.Linq;
23
using System.Net;
34
using System.Net.Http;
5+
using System.Text;
46
using System.Threading.Tasks;
57
using Newtonsoft.Json;
8+
using WebDriverManager.Helpers;
69
using WebDriverManager.Models.Chrome;
710

811
namespace WebDriverManager.Clients
912
{
1013
public static class ChromeForTestingClient
1114
{
1215
private static readonly string BaseUrl = "https://googlechromelabs.github.io/chrome-for-testing/";
13-
16+
1417
private static HttpClient _httpClient;
1518

1619
private static HttpClient HttpClient
@@ -28,6 +31,9 @@ private static HttpClient HttpClient
2831
BaseAddress = new Uri(BaseUrl)
2932
};
3033

34+
_httpClient.DefaultRequestHeaders.Add("User-Agent", "WebDriverManager.NET");
35+
_httpClient.DefaultRequestHeaders.Add("Accept", "*/*");
36+
_httpClient.DefaultRequestHeaders.Add("Accept-Encoding", "br, deflate, gzip, x-gzip");
3137
return _httpClient;
3238
}
3339
}
@@ -59,11 +65,26 @@ private static TResult GetResultFromHttpTask<TResult>(Task<HttpResponseMessage>
5965
{
6066
var httpTask = Task.Run(() => taskToRun);
6167
httpTask.Wait();
68+
var response = httpTask.Result;
69+
if (response.Content.Headers.Contains("Content-Encoding"))
70+
{
71+
string encoding = response.Content.Headers.GetValues("Content-Encoding").FirstOrDefault();
72+
if (string.Equals(encoding, "gzip", StringComparison.OrdinalIgnoreCase))
73+
{
74+
var readBytesTask = Task.Run(() => httpTask.Result.Content.ReadAsByteArrayAsync());
75+
readBytesTask.Wait();
76+
77+
byte[] decompressionData = GzipDecompression.DecompressGzip(readBytesTask.Result);
78+
return JsonConvert.DeserializeObject<TResult>(Encoding.UTF8.GetString(decompressionData));
79+
}
80+
}
81+
6282

6383
var readStringTask = Task.Run(() => httpTask.Result.Content.ReadAsStringAsync());
6484
readStringTask.Wait();
65-
6685
return JsonConvert.DeserializeObject<TResult>(readStringTask.Result);
86+
87+
6788
}
6889
}
6990
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO.Compression;
4+
using System.IO;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
9+
namespace WebDriverManager.Helpers
10+
{
11+
internal class GzipDecompression
12+
{
13+
public static byte[] DecompressGzip(byte[] compressedData)
14+
{
15+
using (MemoryStream compressedStream = new MemoryStream(compressedData))
16+
using (MemoryStream decompressedStream = new MemoryStream())
17+
{
18+
using (GZipStream decompressionStream = new GZipStream(compressedStream, CompressionMode.Decompress))
19+
{
20+
decompressionStream.CopyTo(decompressedStream);
21+
}
22+
23+
return decompressedStream.ToArray();
24+
}
25+
}
26+
}
27+
}

0 commit comments

Comments
 (0)