Skip to content

Commit

Permalink
Fixed windows fetching
Browse files Browse the repository at this point in the history
  • Loading branch information
Meir017 authored and kblok committed Oct 8, 2018
1 parent 81a9653 commit 37338c8
Showing 1 changed file with 36 additions and 21 deletions.
57 changes: 36 additions & 21 deletions lib/PuppeteerSharp/BrowserFetcher.cs
Expand Up @@ -27,16 +27,16 @@ public class BrowserFetcher
{
private const string DefaultDownloadHost = "https://storage.googleapis.com";
private static readonly Dictionary<Platform, string> _downloadUrls = new Dictionary<Platform, string> {
{Platform.Linux, "{0}/chromium-browser-snapshots/Linux_x64/{1}/chrome-linux.zip"},
{Platform.MacOS, "{0}/chromium-browser-snapshots/Mac/{1}/chrome-mac.zip"},
{Platform.Win32, "{0}/chromium-browser-snapshots/Win/{1}/chrome-win32.zip"},
{Platform.Win64, "{0}/chromium-browser-snapshots/Win_x64/{1}/chrome-win32.zip"}
{Platform.Linux, "{0}/chromium-browser-snapshots/Linux_x64/{1}/{2}.zip"},
{Platform.MacOS, "{0}/chromium-browser-snapshots/Mac/{1}/{2}.zip"},
{Platform.Win32, "{0}/chromium-browser-snapshots/Win/{1}/{2}.zip"},
{Platform.Win64, "{0}/chromium-browser-snapshots/Win_x64/{1}/{2}.zip"}
};

/// <summary>
/// Default chromiumg revision.
/// </summary>
public const int DefaultRevision = 588429;
public const int DefaultRevision = 590951;

/// <summary>
/// Gets the downloads folder.
Expand Down Expand Up @@ -90,7 +90,7 @@ public BrowserFetcher(BrowserFetcherOptions options)
/// <param name="revision">A revision to check availability.</param>
public async Task<bool> CanDownloadAsync(int revision)
{
var url = string.Format(_downloadUrls[Platform], DownloadHost, revision);
var url = GetDownloadURL(Platform, DownloadHost, revision);

var client = new HttpClient();
var response = await client.SendAsync(new HttpRequestMessage
Expand Down Expand Up @@ -141,11 +141,11 @@ public RevisionInfo RevisionInfo(int revision)
var result = new RevisionInfo
{
FolderPath = GetFolderPath(revision),
Url = string.Format(_downloadUrls[Platform], DownloadHost, revision),
Url = GetDownloadURL(Platform, DownloadHost, revision),
Revision = revision,
Platform = Platform
};
result.ExecutablePath = GetExecutablePath(Platform, result.FolderPath);
result.ExecutablePath = GetExecutablePath(Platform, revision, result.FolderPath);
result.Local = new DirectoryInfo(result.FolderPath).Exists;

return result;
Expand All @@ -158,7 +158,7 @@ public RevisionInfo RevisionInfo(int revision)
/// <param name="revision">Revision.</param>
public async Task<RevisionInfo> DownloadAsync(int revision)
{
var url = string.Format(_downloadUrls[Platform], DownloadHost, revision);
var url = GetDownloadURL(Platform, DownloadHost, revision);
var zipPath = Path.Combine(DownloadsFolder, $"download-{Platform.ToString()}-{revision}.zip");
var folderPath = GetFolderPath(revision);

Expand Down Expand Up @@ -204,28 +204,27 @@ public async Task<RevisionInfo> DownloadAsync(int revision)
/// <returns>The executable path.</returns>
/// <param name="revision">Revision.</param>
public string GetExecutablePath(int revision)
{
return GetExecutablePath(Platform, GetFolderPath(revision));
}
=> GetExecutablePath(Platform, revision, GetFolderPath(revision));

/// <summary>
/// Gets the executable path.
/// </summary>
/// <returns>The executable path.</returns>
/// <param name="platform">Platform.</param>
/// <param name="revision">Revision.</param>
/// <param name="folderPath">Folder path.</param>
public static string GetExecutablePath(Platform platform, string folderPath)
public static string GetExecutablePath(Platform platform, int revision, string folderPath)
{
switch (platform)
{
case Platform.MacOS:
return Path.Combine(folderPath, "chrome-mac", "Chromium.app", "Contents",
return Path.Combine(folderPath, GetArchiveName(platform, revision), "Chromium.app", "Contents",
"MacOS", "Chromium");
case Platform.Linux:
return Path.Combine(folderPath, "chrome-linux", "chrome");
return Path.Combine(folderPath, GetArchiveName(platform, revision), "chrome");
case Platform.Win32:
case Platform.Win64:
return Path.Combine(folderPath, "chrome-win32", "chrome.exe");
return Path.Combine(folderPath, GetArchiveName(platform, revision), "chrome.exe");
default:
throw new ArgumentException("Invalid platform", nameof(platform));
}
Expand Down Expand Up @@ -253,9 +252,7 @@ internal static Platform GetCurrentPlatform()
return Platform.Unknown;
}
private string GetFolderPath(int revision)
{
return Path.Combine(DownloadsFolder, $"{Platform.ToString()}-{revision}");
}
=> Path.Combine(DownloadsFolder, $"{Platform.ToString()}-{revision}");

private void NativeExtractToDirectory(string zipPath, string folderPath)
{
Expand All @@ -273,8 +270,7 @@ private int GetRevisionFromPath(string folderName)
{
return 0;
}
Platform platform;
if (!Enum.TryParse<Platform>(splits[0], out platform))
if (!Enum.TryParse<Platform>(splits[0], out var platform))
{
platform = Platform.Unknown;
}
Expand All @@ -286,6 +282,25 @@ private int GetRevisionFromPath(string folderName)
return revision;
}

private static string GetArchiveName(Platform platform, int revision)
{
switch (platform)
{
case Platform.Linux:
return "chrome-linux";
case Platform.MacOS:
return "chrome-mac";
case Platform.Win32:
case Platform.Win64:
return revision > 591479 ? "chrome-win" : "chrome-win32";
default:
throw new ArgumentException("Invalid platform", nameof(platform));
}
}

private static string GetDownloadURL(Platform platform, string host, int revision)
=> string.Format(_downloadUrls[platform], host, revision, GetArchiveName(platform, revision));

#endregion
}
}

0 comments on commit 37338c8

Please sign in to comment.