Add retry logic to GetAppManifest

This commit is contained in:
Timothy Baldridge 2022-01-10 20:57:11 -07:00
parent 1faf708b47
commit 764d2b15ff
2 changed files with 21 additions and 16 deletions

View File

@ -7,7 +7,7 @@ on:
branches: [ main ]
env:
VERSION: 3.0.0.0-beta5
VERSION: 3.0.0.0-beta6
jobs:
build:

View File

@ -376,24 +376,29 @@ public class Client : IDisposable
public async Task<DepotManifest> GetAppManifest(uint appId, uint depotId, ulong manifestId)
{
await LoadCDNServers();
var client = _cdnServers.First();
var uri = new UriBuilder()
var manifest = await CircuitBreaker.WithAutoRetryAsync<DepotManifest, HttpRequestException>(_logger, async () =>
{
Host = client.Host,
Port = client.Port,
Scheme = client.Protocol.ToString(),
Path = $"depot/{depotId}/manifest/{manifestId}/5"
}.Uri;
var client = _cdnServers.First();
var uri = new UriBuilder
{
Host = client.Host,
Port = client.Port,
Scheme = client.Protocol.ToString(),
Path = $"depot/{depotId}/manifest/{manifestId}/5"
}.Uri;
var rawData = await _httpClient.GetByteArrayAsync(uri);
var rawData = await _httpClient.GetByteArrayAsync(uri);
using var zip = new ZipArchive(new MemoryStream(rawData));
var firstEntry = zip.Entries.First();
var data = new MemoryStream();
await using var entryStream = firstEntry.Open();
await entryStream.CopyToAsync(data);
return DepotManifest.Deserialize(data.ToArray());
});
using var zip = new ZipArchive(new MemoryStream(rawData));
var firstEntry = zip.Entries.First();
var data = new MemoryStream();
await using var entryStream = firstEntry.Open();
await entryStream.CopyToAsync(data);
var manifest = DepotManifest.Deserialize(data.ToArray());
if (manifest.FilenamesEncrypted)
manifest.DecryptFilenames(await GetDepotKey(depotId, appId));