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