public void FetchData(S2cSite site, string @filetype) { DataDictionary = new Dictionary<string, string>(); Console.WriteLine(string.Format("Fetching {0} data...", @filetype)); switch (@filetype) { case "paths": break; case "json": FetchJsonResourceData(site); break; case "view": FetchSerpBannerData(site); break; case "less": FetchLessData(site); break; case "javascript": FetchJavaScriptData(site); break; case "image": FetchImageData(site); break; } Console.WriteLine("Finished"); }
private void FetchLessData(S2cSite site) { S2CFilesList = new List <S2cFile>(); LessImportsStatementsList = new List <string>(); SiteDomTagsForProcessing = site.PageObject["link"]; FetchStyleCssFiles(site); }
public void TransformData(S2cSite site, string @filetype) { Console.WriteLine(string.Format("Processing {0} data...", @filetype)); switch (@filetype) { case "paths": break; case "json": TransformJsonResourceData(site, FilePathDictionary, DataDictionary); break; case "view": TransformViewData(FilePathDictionary, DataDictionary); break; case "less": TransformLessData(site); break; case "javascript": JavaScriptSiteScriptTagsToS2CJavaScriptFiles(site); break; case "image": TransformImageData(site); break; } Console.WriteLine("Finished"); }
//Transform Data Methods private void TransformJsonResourceData(S2cSite site, Dictionary <string, string> filePathDictionary, Dictionary <string, string> dataDictionary) { CreateScriptUri(site, JavascriptFilesList, site.PageObject["script"]); S2CFilesList.Add(new S2cFile(filePathDictionary["rightrailfilepath"], dataDictionary["rightraildata"])); S2CFilesList.Add(new S2cFile(filePathDictionary["scripturifilepath"], dataDictionary["scripturidata"])); }
public void FetchData(S2cSite site, string @filetype) { DataDictionary = new Dictionary <string, string>(); Console.WriteLine(string.Format("Fetching {0} data...", @filetype)); switch (@filetype) { case "paths": break; case "json": FetchJsonResourceData(site); break; case "view": FetchSerpBannerData(site); break; case "less": FetchLessData(site); break; case "javascript": FetchJavaScriptData(site); break; case "image": FetchImageData(site); break; } Console.WriteLine("Finished"); }
public void WriteData(S2cSite site, string @filetype) { Console.WriteLine(string.Format("Saving {0} data...", @filetype)); switch (@filetype) { case "paths": WritePaths(site); break; case "json": WriteS2cFileData(S2CFilesList); break; case "view": WriteS2cFileData(S2CFilesList); break; case "less": WriteLessFileData(FilePathDictionary); break; case "javascript": WriteJavaScriptData(FilePathDictionary, DataDictionary); break; case "image": WriteImageData(); break; } Console.WriteLine("Finished"); }
private void GenerateJsonResourceFilePaths(S2cSite site) { FilePathDictionary.Add("rightrailfilepath", GenerateFilePath(site.RightRailFilepath, "", site.SiteName + ".json")); FilePathDictionary.Add("scripturifilepath", GenerateFilePath(site.ScriptUriFilepath, "", site.SiteName + ".json")); }
private void StripImagesFromCssFiles(S2cSite site) { var lessFiles = site._lessFilesFactory.S2CFilesList; foreach (S2cFile lessFile in lessFiles) { try { using (StreamReader sr = new StreamReader(lessFile.FilePath)) { foreach (var url in sr.ReadToEnd().Split(' ')) { var imageFilePath = GetImageFileNameFromCssUrl(url); if (imageFilePath == null || !RegexHelper.FileExtensionRegex().Match(imageFilePath).Success) { continue; } var imagePath = GenerateFilePath(site.ResourcesFilepath, "img", imageFilePath.Split('/').Last().Split('?').FirstOrDefault()); var imageUrl = site.PageUrl + imageFilePath; S2CFilesList.Add(new S2cFile(imagePath, imageUrl)); } } } catch (Exception e) { Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); Console.ReadLine(); } } }
// Write Data Methods private void WritePaths(S2cSite site) { Directory.CreateDirectory(site.RouteFilepath); foreach (var directoryPath in FormattedSubdirectoryList) { Directory.CreateDirectory(directoryPath); } }
private void TransformLessData(S2cSite site) { LessFileFilePaths = new List <string>(); FinalCssList = new List <string>(); InsertYahooOnlyStyleReference(site); GenerateLessFiles(site, SiteDomTagsForProcessing); ToLessFilesFromImportStatementList(site); CreateSiteLessFile(); }
private void ToLessFilesFromImportStatementList(S2cSite site) { foreach (var url in LessImportsStatementsList) { string filename = ConvertCssExtToLessExt(PathCleanerHelper.CleanCSSPath(url)); var path = GenerateFilePath(site.ResourcesFilepath, "css", filename); S2CFilesList.Add(CreateLessFile(path, url)); } }
private void CreateSubdirectoryPaths(S2cSite site) { foreach (var directory in site.SubdirectoriesList) { var subdirectory = directory == "partials" ? site.ViewsFilepath + directory : site.ResourcesFilepath + directory; FormattedSubdirectoryList.Add(subdirectory); } }
private void InsertYahooOnlyStyleReference(S2cSite site) { if (!site.IsYahooOnly) { return; } var yahooFileRoute = site.IsBonnier ? "../../../css/yahoo.less" : "../../css/yahoo.less"; LessFileFilePaths.Insert(1, yahooFileRoute); }
private void GenerateInitialJavascriptFileList(S2cSite site) { string adstylesFile = "\"~/content/" + site.SiteRoute + "/scripts/adstyles.js\""; JavascriptFilesList = new List <string> { "\"~/scripts/baseinit.js\"", "\"~/scripts/siteinit.js\"", adstylesFile }; }
private void FetchStyleCssFiles(S2cSite site) { foreach (var styleTag in site.PageObject["style"]) { var result = Regex.Match(styleTag.InnerText, "\"http.+\""); if (result.Success) { LessImportsStatementsList.Add(result.ToString()); } } }
private static IDomObject FindFaviconTag(S2cSite site) { IDomObject faviconTag = null; foreach (var linkTag in site.PageObject["link"]) { if (linkTag["rel"] == "shortcut icon") { faviconTag = linkTag; } } return(faviconTag); }
private void GenerateLessFiles(S2cSite site, CQ linkTagsCq) { foreach (var linkTagCq in linkTagsCq) { var filename = linkTagCq["href"].Split('/').Last(); if (linkTagCq["rel"] == "stylesheet" && RegexHelper.CssRegex().Match(filename).Success) { var file = ConvertCssExtToLessExt(filename); S2CFilesList.Add(CreateLessFile(GenerateFilePath(site.ResourcesFilepath, "css", file), linkTagCq["href"])); } } }
private string ArticleJsonProducer(S2cSite site, int numberOfArticles) { List <string> articlePlaceholderList = new List <string>(); string articlePlaceholder = "{" + "\n\t\t\t" + "\"url\" : \"http//www.example.com\"," + "\n\t\t\t" + "\"title\" : \"Example\"," + "\n\t\t\t" + "\"description\" : \"Change me in " + site.SiteName + ".json\"" + "\n\t\t" + "}"; for (var i = 0; i < numberOfArticles; i++) { articlePlaceholderList.Add(articlePlaceholder); } return(String.Join(",\n\t\t", articlePlaceholderList)); }
private void StripFilesFromImageTags(S2cSite site) { foreach (var tag in SiteDomTagsForProcessing) { if (tag["rel"] == "shortcut icon") { S2CFilesList.Add(CreateImageFile(tag["href"], site)); } else { S2CFilesList.Add(tag["data-src"] != null ? CreateImageFile(tag["data-src"], site) : CreateImageFile(tag["src"], site)); } } }
private void CreateScriptUri(S2cSite site, List <string> javascriptFilesList, CQ scriptsCq) { foreach (IDomObject scriptCq in scriptsCq) { var matchCase = Regex.Match(scriptsCq["src"].Text(), @"\.js"); var scriptWithSource = scriptCq["type"] == "text/javascript" && scriptCq["src"] != null; var scriptWithFile = scriptCq["src"] != null && matchCase.Success; if (scriptWithSource || scriptWithFile) { var rawFileName = scriptCq["src"].Split('/').Last(); var formattedFile = "\"~/content/" + site.SiteRoute + "/scripts/" + PathCleanerHelper.CleanJsPath(rawFileName) + "\""; javascriptFilesList.Add(formattedFile); } } DataDictionary.Add("scripturidata", "{" + "\n\t" + "\"uris\": [" + "\n\t\t" + String.Join(",\n\t\t", javascriptFilesList) + "\n\t" + "]" + "\n" + "}"); }
private void JavaScriptSiteScriptTagsToS2CJavaScriptFiles(S2cSite site) { S2CFilesList = new List <S2cFile>(); foreach (var tag in SiteDomTagsForProcessing) { bool validScriptTagConditionOne = (tag["type"] == "text/javascript" && tag["src"] != null); bool validScriptTagConditionTwo = (tag["src"] != null && RegexHelper.JavaScriptRegex().Match(tag["src"]).Success); if (validScriptTagConditionOne || validScriptTagConditionTwo) { var filepath = PathCleanerHelper.CleanJsPath(GenerateFilePath(site.ResourcesFilepath, "scripts", tag["src"].Split('/').Last())); if (RegexHelper.JavaScriptRegex().Match(filepath).Success) { S2CFilesList.Add(new S2cFile(filepath.Split('?').FirstOrDefault(), tag["src"])); } } } }
static void Main() { Dictionary<string,dynamic> siteArguments = new Dictionary<string,dynamic> { {"url", "http://www.sportrider.com/find/bike"}, {"siteRouteName", "sport_rider"}, {"bonnier", true}, {"yahooOnly", false} }; S2cSite site = new S2cSite(siteArguments); site.Build(site._pathsAndDirectoriesFactory, "paths"); site.Build(site._jsonFilesFactory, "json"); site.Build(site._viewsFactory, "view"); site.Build(site._lessFilesFactory, "less"); site.Build(site._javaScriptFilesFactory, "javascript"); site.Build(site._imagesFactory, "image"); Console.WriteLine("Site Complete press enter to exit..."); Console.ReadLine(); }
public void GenerateFilePaths(S2cSite site, string @filetype) { FilePathDictionary = new Dictionary <string, string>(); Console.WriteLine("Generating {0} filepaths...", @filetype); switch (@filetype) { case "paths": GeneratePathsAndDirectories(site); break; case "json": GenerateJsonResourceFilePaths(site); break; case "view": GenerateBulkFilePaths(FilePathDictionary, site.ViewsFilepath, "", new List <string> { "TopSerpBanner.cshtml", "BottomSerpBanner.cshtml" }); break; case "less": GenerateBulkFilePaths(FilePathDictionary, site.ResourcesFilepath, "css", new List <string> { "insp-custom.less", "site.less" }); break; case "javascript": GenerateBulkFilePaths(FilePathDictionary, site.ResourcesFilepath, "scripts", new List <string> { "adstyles.js" }); break; case "image": break; } Console.WriteLine("Finished"); }
private void InsertYahooOnlyStyleReference(S2cSite site) { if (!site.IsYahooOnly) return; var yahooFileRoute = site.IsBonnier ? "../../../css/yahoo.less" : "../../css/yahoo.less"; LessFileFilePaths.Insert(1, yahooFileRoute); }
private void GenerateInitialJavascriptFileList(S2cSite site) { string adstylesFile = "\"~/content/" + site.SiteRoute + "/scripts/adstyles.js\""; JavascriptFilesList = new List<string> { "\"~/scripts/baseinit.js\"", "\"~/scripts/siteinit.js\"", adstylesFile }; }
private void FetchSerpBannerData(S2cSite site) { S2CFilesList = new List<S2cFile>(); DataDictionary.Add("TopSerpBanner.cshtml", site.PageObject["header"].First().RenderSelection()); DataDictionary.Add("BottomSerpBanner.cshtml", site.PageObject["footer"].First().RenderSelection()); }
public void GenerateFilePaths(S2cSite site, string @filetype) { FilePathDictionary = new Dictionary<string, string>(); Console.WriteLine("Generating {0} filepaths...", @filetype); switch (@filetype) { case "paths": GeneratePathsAndDirectories(site); break; case "json": GenerateJsonResourceFilePaths(site); break; case "view": GenerateBulkFilePaths(FilePathDictionary, site.ViewsFilepath, "", new List<string> {"TopSerpBanner.cshtml", "BottomSerpBanner.cshtml"}); break; case "less": GenerateBulkFilePaths(FilePathDictionary, site.ResourcesFilepath, "css", new List<string> {"insp-custom.less", "site.less"}); break; case "javascript": GenerateBulkFilePaths(FilePathDictionary, site.ResourcesFilepath, "scripts", new List<string> {"adstyles.js"}); break; case "image": break; } Console.WriteLine("Finished"); }
//DATA FETCH METHODS private void FetchJsonResourceData(S2cSite site) { FetchRightRailData(site); GenerateInitialJavascriptFileList(site); S2CFilesList = new List <S2cFile>(); }
private void FetchRightRailData(S2cSite site) { DataDictionary.Add("rightraildata", "{" + "\n\t" + "\"data\": [" + "\n\t\t" + ArticleJsonProducer(site, 4) + "\n\t" + "]" + "\n" + "}"); }
private void FetchSerpBannerData(S2cSite site) { S2CFilesList = new List <S2cFile>(); DataDictionary.Add("TopSerpBanner.cshtml", site.PageObject["header"].First().RenderSelection()); DataDictionary.Add("BottomSerpBanner.cshtml", site.PageObject["footer"].First().RenderSelection()); }
private void FetchJavaScriptData(S2cSite site) { SiteDomTagsForProcessing = site.PageObject["script"]; DataDictionary.Add("adstyles.js", "wsNs = wsNs || {};\nwsNs.csr = wsNs.csr || {};\nwsNs.csr.adStyles = {\n\ttitleColor: '000000',\n\ttitleUnderline: 'false',\n\turlColor: '666666',\n\tbackgroundColor: 'fafafa',\n\ttextColor: '000'\n};"); }
private S2cFile CreateImageFile(string tag, S2cSite site) { var url = (RegexHelper.HttpRegex().Match(tag).Success) ? tag : "http:" + tag; return(new S2cFile(GenerateFilePath(site.ResourcesFilepath, "img", tag.Split('?').FirstOrDefault()), url)); }
private void FetchImageData(S2cSite site) { SiteDomTagsForProcessing = site.PageObject["img"]; SiteDomTagsForProcessing.Add(FindFaviconTag(site)); }
//Transform Data Methods private void TransformJsonResourceData(S2cSite site, Dictionary<string, string> filePathDictionary, Dictionary<string, string> dataDictionary) { CreateScriptUri(site, JavascriptFilesList, site.PageObject["script"]); S2CFilesList.Add(new S2cFile(filePathDictionary["rightrailfilepath"], dataDictionary["rightraildata"])); S2CFilesList.Add(new S2cFile(filePathDictionary["scripturifilepath"], dataDictionary["scripturidata"])); }
private static IDomObject FindFaviconTag(S2cSite site) { IDomObject faviconTag = null; foreach (var linkTag in site.PageObject["link"]) { if (linkTag["rel"] == "shortcut icon") { faviconTag = linkTag; } } return faviconTag; }
private string ArticleJsonProducer(S2cSite site, int numberOfArticles) { List<string> articlePlaceholderList = new List<string>(); string articlePlaceholder = "{" + "\n\t\t\t" + "\"url\" : \"http//www.example.com\"," + "\n\t\t\t" + "\"title\" : \"Example\"," + "\n\t\t\t" + "\"description\" : \"Change me in " + site.SiteName + ".json\"" + "\n\t\t" + "}"; for (var i = 0; i < numberOfArticles; i++) { articlePlaceholderList.Add(articlePlaceholder); } return String.Join(",\n\t\t", articlePlaceholderList); }
private S2cFile CreateImageFile(string tag, S2cSite site) { var url = (RegexHelper.HttpRegex().Match(tag).Success) ? tag : "http:" + tag; return new S2cFile(GenerateFilePath(site.ResourcesFilepath, "img", tag.Split('?').FirstOrDefault()), url); }
private void CreateScriptUri(S2cSite site, List<string> javascriptFilesList, CQ scriptsCq) { foreach (IDomObject scriptCq in scriptsCq) { var matchCase = Regex.Match(scriptsCq["src"].Text(), @"\.js"); var scriptWithSource = scriptCq["type"] == "text/javascript" && scriptCq["src"] != null; var scriptWithFile = scriptCq["src"] != null && matchCase.Success; if (scriptWithSource || scriptWithFile) { var rawFileName = scriptCq["src"].Split('/').Last(); var formattedFile = "\"~/content/" + site.SiteRoute + "/scripts/" + PathCleanerHelper.CleanJsPath(rawFileName) + "\""; javascriptFilesList.Add(formattedFile); } } DataDictionary.Add("scripturidata", "{" + "\n\t" + "\"uris\": [" + "\n\t\t" + String.Join(",\n\t\t", javascriptFilesList) + "\n\t" + "]" + "\n" + "}"); }
// FILEPATHS METHODS private void GeneratePathsAndDirectories(S2cSite site) { FormattedSubdirectoryList = new List<string>(); CreateSubdirectoryPaths(site); }
private void JavaScriptSiteScriptTagsToS2CJavaScriptFiles(S2cSite site) { S2CFilesList = new List<S2cFile>(); foreach (var tag in SiteDomTagsForProcessing) { bool validScriptTagConditionOne = (tag["type"] == "text/javascript" && tag["src"] != null); bool validScriptTagConditionTwo = (tag["src"] != null && RegexHelper.JavaScriptRegex().Match(tag["src"]).Success); if (validScriptTagConditionOne || validScriptTagConditionTwo) { var filepath = PathCleanerHelper.CleanJsPath(GenerateFilePath(site.ResourcesFilepath, "scripts", tag["src"].Split('/').Last())); if (RegexHelper.JavaScriptRegex().Match(filepath).Success) { S2CFilesList.Add(new S2cFile(filepath.Split('?').FirstOrDefault(), tag["src"])); } } } }
private void StripImagesFromCssFiles(S2cSite site) { var lessFiles = site._lessFilesFactory.S2CFilesList; foreach (S2cFile lessFile in lessFiles) { try { using (StreamReader sr = new StreamReader(lessFile.FilePath)) { foreach (var url in sr.ReadToEnd().Split(' ')) { var imageFilePath = GetImageFileNameFromCssUrl(url); if (imageFilePath == null || !RegexHelper.FileExtensionRegex().Match(imageFilePath).Success) continue; var imagePath = GenerateFilePath(site.ResourcesFilepath, "img", imageFilePath.Split('/').Last().Split('?').FirstOrDefault()); var imageUrl = site.PageUrl + imageFilePath; S2CFilesList.Add(new S2cFile(imagePath, imageUrl)); } } } catch (Exception e) { Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); Console.ReadLine(); } } }
private void TransformImageData(S2cSite site) { S2CFilesList = new List<S2cFile>(); StripFilesFromImageTags(site); StripImagesFromCssFiles(site); }
//DATA FETCH METHODS private void FetchJsonResourceData(S2cSite site) { FetchRightRailData(site); GenerateInitialJavascriptFileList(site); S2CFilesList = new List<S2cFile>(); }
private void TransformLessData(S2cSite site) { LessFileFilePaths = new List<string>(); FinalCssList = new List<string>(); InsertYahooOnlyStyleReference(site); GenerateLessFiles(site, SiteDomTagsForProcessing); ToLessFilesFromImportStatementList(site); CreateSiteLessFile(); }
private void FetchLessData(S2cSite site) { S2CFilesList = new List<S2cFile>(); LessImportsStatementsList = new List<string>(); SiteDomTagsForProcessing = site.PageObject["link"]; FetchStyleCssFiles(site); }
// FILEPATHS METHODS private void GeneratePathsAndDirectories(S2cSite site) { FormattedSubdirectoryList = new List <string>(); CreateSubdirectoryPaths(site); }
private void TransformImageData(S2cSite site) { S2CFilesList = new List <S2cFile>(); StripFilesFromImageTags(site); StripImagesFromCssFiles(site); }