/// <summary> /// Generate a constant string to update static code data. /// </summary> /// <param name="ianaOrgTlds"></param> /// <returns></returns> public static (string, string) GenCodes(IanaOrgTlds ianaOrgTlds) { StringBuilder tldConsts = new StringBuilder(); tldConsts.Append(GetAssetSymbolsHeader()); StringBuilder tldDict = new StringBuilder(); tldDict.Append(GetDictHeader()); foreach (string tld in ianaOrgTlds.List) { tldConsts.Append(GetConstant(tld.ToConstantCase())); tldDict.Append(GetDict(tld)); } tldConsts.Append(GetConstFooter()); tldDict.Append(GetDictFooter()); ClassDeclarationSyntax newClassNode = SyntaxFactory.ParseSyntaxTree(tldConsts.ToString()).GetRoot() .DescendantNodes() .OfType <ClassDeclarationSyntax>() .FirstOrDefault(); NamespaceDeclarationSyntax parentNamespace = (NamespaceDeclarationSyntax)newClassNode?.Parent; parentNamespace?.AddMembers(newClassNode).NormalizeWhitespace(); return(tldConsts.ToString(), tldDict.ToString()); }
public void GetCodeSignatureTest() { IanaOrgTlds tldHash = CodeSignatureService.GetIanaOrgTldsFromJson(); Assert.Equal(64, tldHash.Hash.Length); Assert.True(tldHash.Count > 0); Assert.True(!String.IsNullOrEmpty(tldHash.Body)); }
public static IanaOrgTlds GetIanaOrgTldsFromJson() { string signatureJson = File.ReadAllText($"{TldDataPath}{DS}{TldDataSignatureJson}"); IanaOrgTlds tldAlphaByDomainHash = JsonConvert.DeserializeObject <IanaOrgTlds>(signatureJson, new IanaOrgTldsConverter()); tldAlphaByDomainHash.Bytes = File.ReadAllBytes($"{TldDataPath}{DS}{TldDataTxt}"); return(tldAlphaByDomainHash); }
public void Rebuild() { IanaOrgTlds = FetchTlds(); Logger.LogInformation($"Fetched IanaOrgTlds with {IanaOrgTlds.Count} records"); CodeSignatureService.SaveIanaOrgTldsToJson(IanaOrgTlds); (string tldConsts, string tldDict) = CodeGenerator.GenCodes(IanaOrgTlds); File.WriteAllText(Settings.TldConstsPath, tldConsts); File.WriteAllText(Settings.TldDictPath, tldDict); }
public static void SaveIanaOrgTldsToJson(IanaOrgTlds ianaOrgTlds, bool persist = true) { string tldDataJson = JsonConvert.SerializeObject(ianaOrgTlds, Formatting.Indented); if (persist) { File.WriteAllBytes($"{TldDataPath}{DS}{TldDataTxt}", ianaOrgTlds.Bytes); File.WriteAllText($"{TldDataPath}{DS}{TldDataSignatureJson}", tldDataJson); } }
public void CodeGenerateUpdateNeededTest() { IanaOrgTlds tldHash = CodeSignatureService.GetIanaOrgTldsFromJson(); IanaOrgTlds tldLatest = TldDataUpdater.FetchTlds(); #if DEBUG TldDataUpdater tldDataUpdater = new(Output.BuildLoggerFor <TldDataUpdater>()); tldDataUpdater.Rebuild(); #endif Assert.Equal(tldHash.Hash, tldLatest.Hash); }
public void FetchTopLevelDomainsTest() { IanaOrgTlds ianaOrgTlds = TldDataUpdater.FetchTlds(); Output.WriteLine($"Fetched {ianaOrgTlds.List.Count} items"); Assert.True(condition: ianaOrgTlds.List.Any()); Assert.Contains(ianaOrgTlds.List, x => x == "COM"); Assert.Contains(ianaOrgTlds.List, x => x == "NET"); Assert.Contains(ianaOrgTlds.List, x => x == "ORG"); Assert.Contains(ianaOrgTlds.List, x => x == "EDU"); Assert.Contains(ianaOrgTlds.List, x => x == "GOV"); Assert.Contains(ianaOrgTlds.List, x => x == "MIL"); }