Esempio n. 1
0
        /// <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());
        }
Esempio n. 2
0
        public void GetCodeSignatureTest()
        {
            IanaOrgTlds tldHash = CodeSignatureService.GetIanaOrgTldsFromJson();

            Assert.Equal(64, tldHash.Hash.Length);
            Assert.True(tldHash.Count > 0);
            Assert.True(!String.IsNullOrEmpty(tldHash.Body));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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);
 }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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");
        }