Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.90 KB | None | 0 0
  1. using Uno;
  2. using Uno.Collections;
  3. using Experimental.Net.Http;
  4. using Experimental.Data;
  5.  
  6. namespace TeamCity
  7. {
  8.     class BranchUpdater
  9.     {
  10.         private readonly Branch _branch;
  11.         HttpMessageHandler _handler;
  12.         public event Action<string> ErrorOccured;
  13.  
  14.         public BranchUpdater(Branch branch)
  15.         {
  16.             _branch = branch;
  17.         }
  18.  
  19.         public void Update()
  20.         {
  21.             if (_handler == null)
  22.             {
  23.                 _handler = new HttpMessageHandler();
  24.             }
  25.             _branch.Configurations.Clear();
  26.             var q = Setup.Server + "/guestAuth/app/rest/builds/?locator=branch:" + _branch.Name + ",project:" + _branch.ProjectName;
  27.             try
  28.             {
  29.                 var request = _handler.CreateRequest("GET", q);
  30.                 request.Done += OnDone;
  31.                 request.Error += OnError;
  32.                 request.SetResponseType(HttpResponseType.String);
  33.                 request.SendAsync();
  34.             }
  35.             catch (Exception e)
  36.             {
  37.                 OnErrorOccured(e.Message);
  38.             }
  39.         }
  40.  
  41.         private void OnDone(HttpMessageHandlerRequest request)
  42.         {
  43.             try
  44.             {
  45.                 var result = request.GetResponseContentString();
  46.                 var configurations = Parse(result);
  47.                 if (configurations.Count == 0)
  48.                 {
  49.                     debug_log "WARNING: No configurations found for " + _branch.Name;
  50.                 }
  51.                 foreach (var configuration in configurations)
  52.                 {
  53.                     var branchConfig = _branch.TryGetConfiguration(configuration.Name);
  54.                     if (branchConfig == null)
  55.                     {
  56.                         _branch.Configurations.Add(configuration);
  57.                         branchConfig = configuration;
  58.                     }
  59.                     else
  60.                     {
  61.                         branchConfig.Status = configuration.Status;
  62.                     }
  63.                     if (branchConfig.Status == Status.RED)
  64.                     {
  65.                         var breakerInfoUpdater = new BreakerInfoUpdater(_branch, branchConfig);
  66.                         breakerInfoUpdater.ErrorOccured += OnErrorOccured;
  67.                         breakerInfoUpdater.Run();
  68.                     }
  69.                 }
  70.                 _branch.NotifyChanged();
  71.             }
  72.             catch (Exception e)
  73.             {
  74.                 OnErrorOccured(e.Message);
  75.             }
  76.         }
  77.  
  78.         private void OnError(HttpMessageHandlerRequest request, string message)
  79.         {
  80.             OnErrorOccured(request.GetResponseStatus() + ":" + request.Url + "(" + message + ")");
  81.         }
  82.  
  83.         private List<Configuration> Parse(string xml)
  84.         {
  85.             var uniqueConfigurations = new List<Configuration>();
  86.             var rootNode = XmlNode.Parse(xml);
  87.             foreach (var child in rootNode.Children)
  88.             {
  89.                 var configName = child.Attribute("buildTypeId").Value;
  90.                 var status = (child.Attribute("status").Value.Equals("SUCCESS") ? Status.GREEN : Status.RED);
  91.                 var buildId = int.Parse(child.Attribute("id").Value);
  92.                 var alreadyExists = false;
  93.                 foreach (var config in uniqueConfigurations)
  94.                 {
  95.                     if (config.Name.Equals(configName))
  96.                     {
  97.                         alreadyExists = true;
  98.                         break;
  99.                     }
  100.                 }
  101.                 if (!alreadyExists)
  102.                 {
  103.                     uniqueConfigurations.Add(new Configuration(configName, status, buildId));
  104.                 }
  105.             }
  106.             return uniqueConfigurations;
  107.         }
  108.  
  109.         public void OnErrorOccured(string error)
  110.         {
  111.             if (ErrorOccured != null)
  112.             {
  113.                 ErrorOccured(error);
  114.             }
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement