public static async Task <Replay> DownloadReplay(GameKey gameKey, string encryptionKey)
        {
            var replay = new Replay()
            {
                eKey      = encryptionKey,
                GameKey   = gameKey,
                Chunks    = new List <Payload>(),
                KeyFrames = new List <Payload>(),
            };
            await replay.GetPast();

            await replay.GetCurrent();

            return(replay);
        }
 internal static async Task <byte[]> GetKeyframeData(GameKey gameKey, int keyframeId) =>
 await GetBytes(new Uri($"http://{Servers[gameKey.PlatformId]}{UriPrefix}{UriKeyframeData}/{gameKey.PlatformId}/{gameKey.GameId}/{keyframeId}/token"));
 internal static async Task <JObject> GetEndStats(GameKey gameKey) =>
 await GetJson(new Uri($"http://{Servers[gameKey.PlatformId]}{UriPrefix}{UriEndStats}/{gameKey.PlatformId}/{gameKey.GameId}/0/token"));
 internal static async Task <JObject> GetVersion(GameKey gameKey) =>
 await GetJson(new Uri($"http://{Servers[gameKey.PlatformId]}{UriPrefix}{UriVersion}"));