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())); } }
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()); }
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(); }