public Task Announce(CloudCallbackType callbackType) { // no-op Logger.LogDebug("CloudCallback", $"Cloud Callback called with {callbackType}"); var cloudCallbackPayload = cloudCallbackFactory.Make(callbackType); Logger.LogDebug("CloudCallback", $"Cloud Callback No-opped, Status: {cloudCallbackPayload.MatchStatus}"); return(Task.CompletedTask); }
public CloudCallback Make(CloudCallbackType callbackType) { return(callbackType switch { CloudCallbackType.Initializing => new CloudCallback { MatchId = environmentService.MatchId, MatchStatus = "initializing", MatchStatusReason = "Startup" }, CloudCallbackType.Ready => new CloudCallback { MatchId = environmentService.MatchId, MatchStatus = "ready", MatchStatusReason = $"All Components connected and ready for bots. Waiting for {runnerConfig.BotCount} bots to connect." }, CloudCallbackType.Started => new CloudCallback { MatchId = environmentService.MatchId, MatchStatus = "started", MatchStatusReason = $"Match has started with {runnerStateService.TotalConnectedBots} bots" }, CloudCallbackType.Failed => new CloudCallback { MatchId = environmentService.MatchId, MatchStatus = "failed", MatchStatusReason = runnerStateService.FailureReason, Players = MakeFailedPlayerList() }, CloudCallbackType.Finished => new CloudCallback { MatchId = environmentService.MatchId, MatchStatus = "finished", MatchStatusReason = "Game Complete.", Seed = JsonConvert.SerializeObject(runnerStateService.GameCompletePayload.WorldSeeds), Ticks = runnerStateService.GameCompletePayload.TotalTicks.ToString(), Players = MakePlayerList() }, CloudCallbackType.LoggingComplete => new CloudCallback { MatchId = environmentService.MatchId, MatchStatus = "logging_complete", MatchStatusReason = "Game Complete. Logging Complete.", Seed = JsonConvert.SerializeObject(runnerStateService.GameCompletePayload.WorldSeeds), Ticks = runnerStateService.GameCompletePayload.TotalTicks.ToString(), Players = MakePlayerList() }, _ => throw new ArgumentOutOfRangeException(nameof(callbackType), callbackType, "Unknown Cloud Callback Type") });
public async Task Announce(CloudCallbackType callbackType) { var cloudCallbackPayload = cloudCallbackFactory.Make(callbackType); Logger.LogInfo("CloudCallback", $"Cloud Callback Initiated, Status: {cloudCallbackPayload.MatchStatus}, Callback player Count: {cloudCallbackPayload.Players?.Count}"); try { var result = await httpClient.PostAsync(environmentService.ApiUrl, cloudCallbackPayload, new JsonMediaTypeFormatter()); if (!result.IsSuccessStatusCode) { Logger.LogWarning("CloudCallback", $"Received non-success status code from cloud callback. Code: {result.StatusCode}"); } } catch (Exception e) { Logger.LogError("CloudCallback", $"Failed to make cloud callback with error: {e.Message}"); } }