Пример #1
0
        private async Task <T> requestWaypointData <T>(string path, Dictionary <string, string> query, string bucketKey)
            where T : External.WaypointResponse
        {
            var auth = await getTokenHeaders();

            var opts = new Options(auth);

            // TODO(0xdeafcafe): Handle waypoint errors
            var response = await _statsClient.Do <T>("GET", path, query, opts);

            switch (response.StatusCode)
            {
            // Should never happen on player-related requests
            case ResponseCode.NotFound:
                throw new BaeException(
                          "content_not_found",
                          new Dictionary <string, object> {
                    { "Path", path },
                    { "Query", query },
                }
                          );

            case ResponseCode.PlayerHasNotPlayedHalo4:
                throw new BaeException("player_never_played");

            case ResponseCode.Okay:
            case ResponseCode.Found:
            default:
                return(response);
            }
        }
Пример #2
0
        public async Task ConnectOrLaunch()
        {
            if (_puppeteerRemoteHost != null)
            {
                var parts   = _puppeteerRemoteHost.Split(":");
                var lookups = await Dns.GetHostAddressesAsync(parts[0]);

                var ip           = lookups.First().ToString();
                var puppeteerUrl = $"http://{ip}:{parts[1]}";
                var jsonClient   = new JsonClient(puppeteerUrl);

                _logger.LogInformation($"Fetching websocket url from {puppeteerUrl}");

                var version = await jsonClient.Do <Dictionary <string, string> >("GET", "/json/version");

                var url = version["webSocketDebuggerUrl"];

                _logger.LogInformation($"Connecting to browser with websocker url {url}");

                _browser = await Puppeteer.ConnectAsync(new ConnectOptions { BrowserWSEndpoint = url });

                _logger.LogInformation("Connected to browser");

                return;
            }

            _logger.LogInformation("Downloading browser");

            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);

            _logger.LogInformation("Launching headless browser");

            _browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });

            _logger.LogInformation("Launched headless browser");
        }