static async Task MainAsync(string[] args) { var settings = ServerSettings.ReadFrom("config.yaml"); Console.WriteLine("Port: {0}", settings.Port); var url = "http://localhost:" + settings.Port; using (WebApp.Start <Startup>(url)) { var teamCityClient = new TeamCity.RestApiClient(settings.TeamCity.Url, settings.TeamCity.Username, settings.TeamCity.Password); var poller = new TeamCity.BuildsPoller(teamCityClient, TimeSpan.FromSeconds(1)); var connectionGroups = GlobalHost.ConnectionManager.GetConnectionContext <BuildsConnection>().Groups; poller.BuildStarted += async id => { var build = await teamCityClient.GetBuildAsync(id); await connectionGroups.Send(build.BuildType.Id, new BuildNotification("start", build)); Console.WriteLine("{0}: started", build.BuildType.Id); }; poller.BuildUpdated += async id => { var build = await teamCityClient.GetBuildAsync(id); await connectionGroups.Send(build.BuildType.Id, new BuildNotification("update", build)); var percentage = build.RunningInfo == null ? 100 : build.RunningInfo.PercentageComplete; Console.WriteLine("{0}: {1}%", build.BuildType.Id, percentage); }; poller.BuildFinished += async id => { var build = await teamCityClient.GetBuildAsync(id); await connectionGroups.Send(build.BuildType.Id, new BuildNotification("finish", build)); Console.WriteLine("{0}: finished with {1} - {2}", build.BuildType.Id, build.Status, build.StatusText); }; await poller.StartAsync(); } }
static async Task MainAsync(string[] args) { var settings = ServerSettings.ReadFrom("config.yaml"); Console.WriteLine("Port: {0}", settings.Port); var url = "http://localhost:" + settings.Port; using (WebApp.Start<Startup>(url)) { var teamCityClient = new TeamCity.RestApiClient(settings.TeamCity.Url, settings.TeamCity.Username, settings.TeamCity.Password); var poller = new TeamCity.BuildsPoller(teamCityClient, TimeSpan.FromSeconds(1)); var connectionGroups = GlobalHost.ConnectionManager.GetConnectionContext<BuildsConnection>().Groups; poller.BuildStarted += async id => { var build = await teamCityClient.GetBuildAsync(id); await connectionGroups.Send(build.BuildType.Id, new BuildNotification("start", build)); Console.WriteLine("{0}: started", build.BuildType.Id); }; poller.BuildUpdated += async id => { var build = await teamCityClient.GetBuildAsync(id); await connectionGroups.Send(build.BuildType.Id, new BuildNotification("update", build)); var percentage = build.RunningInfo == null ? 100 : build.RunningInfo.PercentageComplete; Console.WriteLine("{0}: {1}%", build.BuildType.Id, percentage); }; poller.BuildFinished += async id => { var build = await teamCityClient.GetBuildAsync(id); await connectionGroups.Send(build.BuildType.Id, new BuildNotification("finish", build)); Console.WriteLine("{0}: finished with {1} - {2}", build.BuildType.Id, build.Status, build.StatusText); }; await poller.StartAsync(); } }