Exemplo n.º 1
0
        public VersionResult(string line, CDNResults cdnResults)
        {
            CDNUrls   = new Dictionary <string, IEnumerable <string> >();
            BuildUrls = new Dictionary <string, IEnumerable <string> >();

            Results = line.Split('|');

            if (Results.Length > 0)
            {
                Region = Results[0];
            }

            if (Results.Length > 1)
            {
                BuildConfigHash = Results[1];
            }

            if (Results.Length > 2)
            {
                CDNConfigHash = Results[2];
            }

            if (Results.Length > 3)
            {
                BuildID = Results[3];
            }

            if (Results.Length > 4)
            {
                VersionName = Results[4];
            }

            foreach (var cdnUrl in cdnResults.CDNUrls)
            {
                BuildUrls.Add(cdnUrl.Key,
                              cdnUrl.Value.Select(
                                  s => string.Format(s, CASCEngine.PathType.Config, BuildConfigFirstTwo, BuildConfigSecondTwo, BuildConfigHash).ToLower()));
                CDNUrls.Add(cdnUrl.Key,
                            cdnUrl.Value.Select(
                                s => string.Format(s, CASCEngine.PathType.Config, CDNConfigFirstTwo, CDNConfigSecondTwo, CDNConfigHash).ToLower()));
            }
        }
Exemplo n.º 2
0
        public VersionResults(string url, CDNResults cdnResults)
        {
            CDNResults = cdnResults;
            string response = Traffic.HTTPGET(url);

            if (response == null)
            {
                Results = null;
                Console.WriteLine("Zero (0) Version results retrieved! Probably a bad program code?");
                return;
            }

            List <string> lines = response.Replace("\r", "")
                                  .Split('\n')
                                  .Where(w => !string.IsNullOrWhiteSpace(w))
                                  .ToList();

            lines.RemoveAt(0);

            Results = lines.Select(s => new VersionResult(s, cdnResults));
            Console.WriteLine("{0} Version results retrieved!", Results.Count());
        }
Exemplo n.º 3
0
        public static void ProcessProgram(ProgramCode programCode)
        {
            string cdnUrl     = string.Format(BlizzardUrl.CDNUrl, programCode).ToLower();
            string versionUrl = string.Format(BlizzardUrl.VersionsUrl, programCode).ToLower();

            Console.WriteLine($"Retrieving CDN information for {programCode} from\r\n{cdnUrl}");
            CDNResults cdnResults = new CDNResults(cdnUrl);

            Console.WriteLine($"Retrieving Version information for {programCode} from\r\n{versionUrl}");
            VersionResults versionResults = new VersionResults(versionUrl, cdnResults);

            if (cdnResults.Results == null || cdnResults.CDNUrls == null ||
                !cdnResults.Results.Any() || !cdnResults.CDNUrls.Any())
            {
                var originalColor = Console.ForegroundColor;
                Console.ForegroundColor = ConsoleColor.DarkRed;
                Console.WriteLine($"\r\nAN ERROR HAS OCCURRED! No CDN Results were returned for {programCode} from {cdnUrl}!");
                Console.ForegroundColor = originalColor;
            }
            else
            {
                foreach (var result in cdnResults.Results)
                {
                    DetectedRegions.Add(result.Region);
                }
            }

            if (versionResults.Results == null || versionResults.BuildConfigUrls == null ||
                versionResults.CDNConfigUrls == null ||
                !versionResults.Results.Any() || !versionResults.BuildConfigUrls.Any() ||
                versionResults.CDNConfigUrls.Any())
            {
                var originalColor = Console.ForegroundColor;
                Console.ForegroundColor = ConsoleColor.DarkRed;
                Console.WriteLine(
                    $"\r\nAN ERROR HAS OCCURRED! No Version Results were returned for {programCode} from {versionUrl}!");
                Console.ForegroundColor = originalColor;
            }
            else
            {
                foreach (var result in versionResults.Results)
                {
                    DetectedRegions.Add(result.Region);
                }
            }

            Console.Clear();

            foreach (var region in DetectedRegions.Distinct().OrderBy(o => o))
            {
                Console.WriteLine(region);
            }

            //if (versionResults.Results != null
            //    && versionResults.Results.Any())
            //{
            //    foreach (VersionResult versionResult in versionResults.Results)
            //    {
            //        string region = versionResult.Region;
            //        string buildID = versionResult.BuildID;
            //        string versionName = versionResult.VersionName;
            //        int totalBuildUrlCount = versionResult.BuildUrls.Count;
            //        int totalCDNUrlCount = versionResult.CDNUrls.Count;

            //        foreach (KeyValuePair<string, IEnumerable<string>> urls in versionResult.CDNUrls)
            //        {
            //            foreach (string url in urls.Value)
            //            {
            //                string result = Traffic.HTTPGET(url);

            //                if (!string.IsNullOrWhiteSpace(result))
            //                {
            //                    Console.WriteLine("\r*****************************************************");
            //                    Console.WriteLine("*****                 CDN Config                *****");
            //                    Console.WriteLine("*****************************************************");
            //                    Console.WriteLine("***** Realm Region: {0} | File Region {1}\r\n***** Build: {1} | Version: {2}\r\n***** {3}",
            //                        region,
            //                        buildID,
            //                        versionName,
            //                        url);
            //                    Console.WriteLine(result);
            //                    Console.WriteLine("*****************************************************");
            //                    //Console.WriteLine("\n{0} | {1} | B? {2} | C? {3} | Data Length: {4}\r\n{5}", region, buildID, isBuildConfig, isCDNConfig, result.Length, versionUrl);
            //                }
            //            }
            //        }
            //        foreach (KeyValuePair<string, IEnumerable<string>> urls in versionResult.BuildUrls)
            //        {
            //            foreach (string url in urls.Value)
            //            {
            //                string result = Traffic.HTTPGET(url);

            //                if (!string.IsNullOrWhiteSpace(result))
            //                {
            //                    Console.WriteLine("\r*****************************************************");
            //                    Console.WriteLine("*****                Build Config               *****");
            //                    Console.WriteLine("*****************************************************");
            //                    Console.WriteLine("***** Realm Region: {0} | File Region {1}\r\n***** Build: {1} | Version: {2}\r\n***** {3}",
            //                        region,
            //                        buildID,
            //                        versionName,
            //                        url);
            //                    Console.WriteLine(result);
            //                    Console.WriteLine("*****************************************************");
            //                    //Console.WriteLine("\n{0} | {1} | B? {2} | C? {3} | Data Length: {4}\r\n{5}", region, buildID, isBuildConfig, isCDNConfig, result.Length, versionUrl);
            //                }
            //            }
            //        }
            //    }
            //}

            //Console.WriteLine($"Application has finished parsing {Programs[programCode]}.\r\nPress enter to continue.");
            //Console.ReadLine();
        }