public override HttpHandlerResult Get() { var sessionId = GetQuery("session"); try { if (!PhotonServer.Instance.Sessions.TryGet(sessionId, out var session)) { return(Response.BadRequest().SetText($"Server Session '{sessionId}' was not found!")); } if (!(session is ServerBuildSession buildSession)) { throw new Exception($"Session '{sessionId}' is not a valid build session!"); } var response = new HttpBuildResultResponse { BuildNumber = buildSession.Build.Number, Result = buildSession.Result, ProjectPackages = buildSession.PushedProjectPackages .Select(x => new HttpPackageReference(x)).ToArray(), }; return(Response.Json(response)); } catch (Exception error) { return(Response.Exception(error)); } }
public async Task Run(CommandContext context) { var server = context.Servers.Get(ServerName); HttpBuildStartResponse startResult = null; await AuthRetryAsync(async() => { startResult = await StartSession(server); }); var sessionId = startResult?.SessionId; if (string.IsNullOrEmpty(sessionId)) { throw new ApplicationException($"An invalid session-id was returned! [{sessionId}]"); } var position = 0; while (true) { var data = await UpdateOutput(server, sessionId, position); if (data == null) { throw new ApplicationException("An empty session-output response was returned!"); } if (data.IsComplete) { break; } if (!data.IsModified) { await Task.Delay(PollIntervalMs); continue; } position = data.NewLength; ConsoleEx.Out.WriteLine(data.NewText, ConsoleColor.Gray); } Result = await GetResult(server, sessionId); if (Result.Result?.Successful ?? false) { ConsoleEx.Out.WriteLine("Build completed successfully.", ConsoleColor.DarkGreen); } else if (Result.Result?.Cancelled ?? false) { ConsoleEx.Out.WriteLine("Build cancelled.", ConsoleColor.DarkYellow); } else { ConsoleEx.Out.WriteLine("Build failed!", ConsoleColor.Red); if (!string.IsNullOrEmpty(Result.Result?.Message)) { ConsoleEx.Out.WriteLine(Result.Result.Message, ConsoleColor.DarkRed); } } }