Ejemplo n.º 1
0
        /// <summary>
        /// Downloads all web files, saves them in a folder strucure according to their parent pages and saves a metadata JSON file.
        /// </summary>
        private void DownloadWebFiles()
        {
            var webPagePaths = GetWebPageTree();
            var webFiles     = GetWebFiles();
            var directory    = Path.Combine(Options.LocalDirectory, Options.WebFilesDirectory);
            var metaData     = new ConfigurationMetaData(Path.Combine(directory, "WebFiles.json"));

            foreach (var webFile  in webFiles)
            {
                var content = GetContent(webFile.Id);
                if (content != null)
                {
                    var path = Path.Combine(directory, webPagePaths[webFile.ParentPageId]);
                    CreateDirectory(path);
                    var filePath        = Path.Combine(path, webFile.Name);
                    var metaDataElement = metaData.GetElementById(webFile.Id);
                    if (ShouldOverwriteFile(metaDataElement, filePath, webFile.ModifiedOn))
                    {
                        metaDataElement.Type       = ConfigurationElement.ElementType.WebFile;
                        metaDataElement.Name       = webFile.Name;
                        metaDataElement.FileName   = filePath.Substring(directory.Length + 1);
                        metaDataElement.ModifiedOn = webFile.ModifiedOn;
                        metaDataElement.CheckSum   = CheckSum.CalculateHash(content);
                        Console.WriteLine("Saving {0}", filePath.ShortenLeft(80));
                        WriteBinaryFile(filePath, content);
                    }
                }
            }
            metaData.Update();
        }
Ejemplo n.º 2
0
        private void DownloadWebTemplates()
        {
            Console.WriteLine("Downloading Web Templates");
            var directory = CreateDirectory(Options.WebTemplatesDirectory);
            var metaData  = new ConfigurationMetaData(Path.Combine(directory, "WebTemplates.json"));
            var fetchData = new
            {
                adx_websiteid = Website.Id
            };
            var fetchXml = $@"
<fetch>
  <entity name='adx_webtemplate'>
    <attribute name='adx_websiteid' />
    <attribute name='adx_name' />
    <attribute name='adx_source' />
    <attribute name='modifiedon' />
    <filter>
      <condition attribute='adx_websiteid' operator='eq' value='{fetchData.adx_websiteid}'/>
    </filter>
  </entity>
</fetch>";

            var result = Service.RetrieveMultiple(new FetchExpression(fetchXml));

            foreach (var e in result.Entities)
            {
                var    name            = (string)e["adx_name"];
                var    filename        = name + ".liquid";
                var    path            = Path.Combine(directory, filename);
                var    modifiedOn      = (DateTime)e["modifiedon"];
                string content         = (string)e["adx_source"];
                var    metaDataElement = metaData.GetElementById(e.Id);
                if (ShouldOverwriteFile(metaDataElement, path, modifiedOn))
                {
                    metaDataElement.Type       = ConfigurationElement.ElementType.WebTemplate;
                    metaDataElement.Name       = name;
                    metaDataElement.FileName   = filename;
                    metaDataElement.RecordId   = e.Id;
                    metaDataElement.ModifiedOn = modifiedOn;
                    metaDataElement.CheckSum   = CheckSum.CalculateHash(content);
                    Console.WriteLine("Saving {0} ({1})", path.ShortenLeft(30), content.ShortenRight(50));
                    WriteTextFile(path, content);
                }
            }
            metaData.Update();
        }