Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Uno;
- using Uno.Collections;
- using Experimental.Net.Http;
- using Experimental.Data;
- namespace TeamCity
- {
- class BranchUpdater
- {
- private readonly Branch _branch;
- HttpMessageHandler _handler;
- public event Action<string> ErrorOccured;
- public BranchUpdater(Branch branch)
- {
- _branch = branch;
- }
- public void Update()
- {
- if (_handler == null)
- {
- _handler = new HttpMessageHandler();
- }
- _branch.Configurations.Clear();
- var q = Setup.Server + "/guestAuth/app/rest/builds/?locator=branch:" + _branch.Name + ",project:" + _branch.ProjectName;
- try
- {
- var request = _handler.CreateRequest("GET", q);
- request.Done += OnDone;
- request.Error += OnError;
- request.SetResponseType(HttpResponseType.String);
- request.SendAsync();
- }
- catch (Exception e)
- {
- OnErrorOccured(e.Message);
- }
- }
- private void OnDone(HttpMessageHandlerRequest request)
- {
- try
- {
- var result = request.GetResponseContentString();
- var configurations = Parse(result);
- if (configurations.Count == 0)
- {
- debug_log "WARNING: No configurations found for " + _branch.Name;
- }
- foreach (var configuration in configurations)
- {
- var branchConfig = _branch.TryGetConfiguration(configuration.Name);
- if (branchConfig == null)
- {
- _branch.Configurations.Add(configuration);
- branchConfig = configuration;
- }
- else
- {
- branchConfig.Status = configuration.Status;
- }
- if (branchConfig.Status == Status.RED)
- {
- var breakerInfoUpdater = new BreakerInfoUpdater(_branch, branchConfig);
- breakerInfoUpdater.ErrorOccured += OnErrorOccured;
- breakerInfoUpdater.Run();
- }
- }
- _branch.NotifyChanged();
- }
- catch (Exception e)
- {
- OnErrorOccured(e.Message);
- }
- }
- private void OnError(HttpMessageHandlerRequest request, string message)
- {
- OnErrorOccured(request.GetResponseStatus() + ":" + request.Url + "(" + message + ")");
- }
- private List<Configuration> Parse(string xml)
- {
- var uniqueConfigurations = new List<Configuration>();
- var rootNode = XmlNode.Parse(xml);
- foreach (var child in rootNode.Children)
- {
- var configName = child.Attribute("buildTypeId").Value;
- var status = (child.Attribute("status").Value.Equals("SUCCESS") ? Status.GREEN : Status.RED);
- var buildId = int.Parse(child.Attribute("id").Value);
- var alreadyExists = false;
- foreach (var config in uniqueConfigurations)
- {
- if (config.Name.Equals(configName))
- {
- alreadyExists = true;
- break;
- }
- }
- if (!alreadyExists)
- {
- uniqueConfigurations.Add(new Configuration(configName, status, buildId));
- }
- }
- return uniqueConfigurations;
- }
- public void OnErrorOccured(string error)
- {
- if (ErrorOccured != null)
- {
- ErrorOccured(error);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement