internal async Task <TFSBuild.RootObject> GetBuilds()
        {
            using (HttpClient client = new HttpClient())
            {
                ConsoleWriter.Write("Connecting...", MessageType.Information);
                client.DefaultRequestHeaders.Accept.Add(
                    new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                                                                                           Convert.ToBase64String(
                                                                                               System.Text.ASCIIEncoding.ASCII.GetBytes(
                                                                                                   string.Format("{0}:{1}", _userName, _password))));
                using (HttpResponseMessage response = client.GetAsync(
                           _collectionURL).Result)
                {
                    ConsoleWriter.Write("Authentication Successfull!!", MessageType.Information);
                    response.EnsureSuccessStatusCode();
                    string responseBody = await response.Content.ReadAsStringAsync();

                    ConsoleWriter.Write("Getting Build(s)...", MessageType.Information);
                    TFSBuild.RootObject rootObject = Utils.DeserializeJSON <TFSBuild.RootObject>(responseBody);
                    return(rootObject);
                }
            }
        }
        static void Main(string[] args)
        {
            CommandLineArgs command = new CommandLineArgs(args);

            if (command.IsDownload && string.IsNullOrWhiteSpace(command.BuildNumber))
            {
                ConsoleWriter.Write("Cannot download build. Enter a valid build ID to download.", MessageType.Error);
                Console.ForegroundColor = ConsoleColor.Gray;
                return;
            }
            if (string.IsNullOrWhiteSpace(command.ProjectName) && !string.IsNullOrWhiteSpace(command.BuildNumber))
            {
                ConsoleWriter.Write("No project name specified.", MessageType.Error);
                Console.ForegroundColor = ConsoleColor.Gray;
                return;
            }

            TFS _tfs = new TFS(command.UserName, command.Password, command.CollectionURL, command.ProjectName, command.BuildNumber);

            TFSBuild.RootObject obj = _tfs.GetBuilds().Result;

            if (obj != null)
            {
                List <TFSBuild.Value> v = obj.value;

                if (command.IsDownload)
                {
                    TFSBuild.Value buildDef = v.Single(x => x.buildNumber == command.BuildNumber);
                    if (!string.IsNullOrEmpty(command.OutputFile))
                    {
                        ConsoleWriter.Write("Download destination: " + command.OutputFile, MessageType.Information);
                        ConsoleWriter.Write("Initiating download..." + command.OutputFile, MessageType.Information);
                        DownloadBuild _buildDownloader = new DownloadBuild(buildDef.drop.downloadUrl, command.OutputFile + command.BuildNumber + ".zip");

                        _buildDownloader.Download();
                        ConsoleWriter.Write("Download Successfull!!" + command.OutputFile, MessageType.Information);
                    }
                    else
                    {
                        ConsoleWriter.Write("Download destination: " + command.OutputFile, MessageType.Information);
                        DownloadBuild _buildDownloader = new DownloadBuild(buildDef.drop.downloadUrl, command.BuildNumber + ".zip");
                        _buildDownloader.Download();
                        ConsoleWriter.Write("Download Successfull!!" + command.OutputFile, MessageType.Information);
                    }
                }
                else
                {
                    foreach (var _value in v)
                    {
                        ConsoleWriter.Write("Build Number: " + _value.buildNumber, MessageType.Success);
                        ConsoleWriter.Write("Download URL: " + _value.drop.downloadUrl, MessageType.Success);
                        ConsoleWriter.Write("------------------------------------------------------------------", MessageType.Success);
                    }
                }
            }
            //restore the original console foreground color
            ConsoleWriter.Write("Press any key to exit..." + command.OutputFile, MessageType.Information);
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.ReadLine();
        }