Ejemplo n.º 1
0
        /// <summary>
        /// Method to export build definitions json from source project
        /// </summary>
        public void ExportBuildDefinitions(string project)
        {
            try
            {
                List <TemplatesGeneratorTool.ViewModel.BuildDefinitions.BuildDefinition> ResultList = new List <TemplatesGeneratorTool.ViewModel.BuildDefinitions.BuildDefinition>();
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(_sourceConfig.UriString);
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _sourceCredentials);

                    HttpResponseMessage response = client.GetAsync(_sourceConfig.UriString + string.Format("/DefaultCollection/{0}/_apis/build/definitions?api-version=2.0", project)).Result;
                    if (response.IsSuccessStatusCode)
                    {
                        BuildDefinitionResponse.Build Definitions = Newtonsoft.Json.JsonConvert.DeserializeObject <BuildDefinitionResponse.Build>(response.Content.ReadAsStringAsync().Result.ToString());
                        foreach (BuildDefinitionResponse.Value value in Definitions.value)
                        {
                            TemplatesGeneratorTool.ViewModel.BuildDefinitions.BuildDefinition DefinitionResult = new TemplatesGeneratorTool.ViewModel.BuildDefinitions.BuildDefinition();
                            using (var client1 = new HttpClient())
                            {
                                client1.BaseAddress = new Uri(_sourceConfig.UriString);
                                client1.DefaultRequestHeaders.Accept.Clear();
                                client1.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                                client1.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _sourceCredentials);

                                HttpResponseMessage ResponseDef = client1.GetAsync(_sourceConfig.UriString + string.Format("/DefaultCollection/{0}/_apis/build/definitions/{1}?api-version=2.0", project, value.id)).Result;
                                if (response.IsSuccessStatusCode)
                                {
                                    DefinitionResult = Newtonsoft.Json.JsonConvert.DeserializeObject <TemplatesGeneratorTool.ViewModel.BuildDefinitions.BuildDefinition>(ResponseDef.Content.ReadAsStringAsync().Result.ToString());
                                    ResultList.Add(DefinitionResult);
                                }
                            }
                        }
                    }
                }
                if (ResultList.Count > 0)
                {
                    if (!Directory.Exists(@"Templates\BuildDefinitions"))
                    {
                        Directory.CreateDirectory(@"Templates\BuildDefinitions");
                    }
                    int count = 1;
                    foreach (TemplatesGeneratorTool.ViewModel.BuildDefinitions.BuildDefinition def in ResultList)
                    {
                        def.repository.id   = "$repositoryId$";
                        def.repository.name = "$repositoryName$";
                        def.repository.url  = "";

                        System.IO.File.WriteAllText(@"Templates\BuildDefinitions\BuildDef" + count + ".json", JsonConvert.SerializeObject(def, Formatting.Indented));
                        count = count + 1;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error occured while generating build definition template: " + ex.Message);
                Console.WriteLine("");
            }
        }
 //Export build definitions to write file
 public List <JObject> ExportBuildDefinitions()
 {
     try
     {
         List <JObject> resultList = new List <JObject>();
         using (var client = GetHttpClient())
         {
             HttpResponseMessage response = client.GetAsync(string.Format("{0}/_apis/build/definitions?api-version=" + _configuration.VersionNumber, Project)).Result;
             if (response.IsSuccessStatusCode)
             {
                 BuildDefinitionResponse.Build Definitions = Newtonsoft.Json.JsonConvert.DeserializeObject <BuildDefinitionResponse.Build>(response.Content.ReadAsStringAsync().Result.ToString());
                 if (Definitions.count > 0)
                 {
                     foreach (BuildDefinitionResponse.Value value in Definitions.value)
                     {
                         BuildDefinitions.BuildDefinition DefinitionResult = new BuildDefinitions.BuildDefinition();
                         using (var client1 = GetHttpClient())
                         {
                             HttpResponseMessage ResponseDef = client1.GetAsync(string.Format("{0}/_apis/build/definitions/{1}?api-version=" + _configuration.VersionNumber, Project, value.id)).Result;
                             if (response.IsSuccessStatusCode)
                             {
                                 string  result = ResponseDef.Content.ReadAsStringAsync().Result;
                                 JObject o      = JObject.Parse(result);
                                 resultList.Add(o);
                             }
                         }
                     }
                     return(resultList);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         logger.Info(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + "\t" + ex.Message + "\n" + ex.StackTrace + "\n");
     }
     return(new List <JObject>());
 }