private dynamic ParseDelete(string statement) { dynamic delete = new ExpandoObject(); delete.Type = "DELETE"; if (!statement.Contains("WHERE")) { var tableName = SubstringExtensions.Between(statement, "DELETE FROM", ";", true); delete.Table = tableName; } else { var tableName = SubstringExtensions.Between(statement, "DELETE FROM", "WHERE", true); delete.Table = tableName; dynamic wherExpandoObject = new ExpandoObject(); var whereText = SubstringExtensions.Between(statement, "WHERE", ";", true); int counter = 0; foreach (var oper in ComparisonOperators) { if (whereText.Contains(oper)) { dynamic critera = new ExpandoObject(); critera.Left = SubstringExtensions.Before(whereText, oper); critera.Operator = oper; critera.Right = SubstringExtensions.After(whereText, oper); AddProperty(wherExpandoObject, counter++.ToString(), critera); } } AddProperty(delete, "Where", wherExpandoObject); } return(delete); }
public async Task <IActionResult> Thumbnail(ThumbnailRequest model) { if (!ModelState.IsValid) { return(View(model)); } else { var absolutePath = AppDomain.CurrentDomain.BaseDirectory; var path = absolutePath + "\\" + model.Prefix; bool folderExists = Directory.Exists(path); if (!folderExists) { Directory.CreateDirectory(path); } // Setup the configuration to support document loading var config = Configuration.Default.WithDefaultLoader(); var address = model.Link; // Asynchronously get the document in a new context using the configuration var document = await BrowsingContext.New(config).OpenAsync(address); // This CSS selector gets the desired content var cellSelector = "a"; // Perform the query to get all cells with the content var cells = document.QuerySelectorAll(cellSelector); // We are only interested in the text - select it with LINQ var titles = cells.Select(m => m.TextContent); var links = cells.Select(m => m.GetAttribute("href")).ToList(); var sortedLinks = links.Where(x => x.Contains("/watch?v")).ToList(); sortedLinks = sortedLinks.Select(x => SubstringExtensions.BeforeIfContains(SubstringExtensions.BeforeIfContains(SubstringExtensions.After(x, "/watch?v="), "&index="), "&list=")).ToList(); var tasks = sortedLinks.Select(link => Task.Factory.StartNew(() => { using (WebClient webClient = new WebClient()) { string thumbnailLink = string.Format("https://img.youtube.com/vi/{0}/maxresdefault.jpg", link); try { webClient.DownloadFile(thumbnailLink, string.Format(path + "\\{0}.jpg", link)); webClient.Dispose(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } })).ToArray(); Task.WaitAll(tasks); return(RedirectToAction("Results", new { prefix = model.Prefix })); } }
private dynamic ParseSelect(string statement) { dynamic select = new ExpandoObject(); select.Type = "SELECT"; dynamic columns = new ExpandoObject(); //Split statement to words var words = SubstringExtensions.Between(statement, "SELECT", "FROM").Trim().Replace(" ", ""); var columnNames = words.Split(','); if (string.IsNullOrWhiteSpace(words) || columnNames == null || columnNames.Length == 0 || !statement.Contains("FROM")) { select.Error = "Invalid statement"; return(select); } //Column names foreach (var colName in columnNames) { dynamic col1 = new ExpandoObject(); col1.Type = "Column"; col1.Name = colName.Replace(",", "").ToLower(); AddProperty(columns, columnNames.IndexOf(colName).ToString(), col1); } AddProperty(select, "Columns", columns); //Table name and aliases dynamic table = new ExpandoObject(); var tableNameAndAliases = SubstringExtensions.Between(statement, "FROM", "WHERE").Trim(); if (tableNameAndAliases.Contains("AS")) { var tableName = SubstringExtensions.Between(statement, "FROM", "AS").Trim(); var alises = SubstringExtensions.Between(statement, "AS", "WHERE").Trim(); table.Type = "Table"; table.Name = tableName.ToLower(); table.Alises = alises.ToLower(); } else { var tableName = SubstringExtensions.Between(statement, "FROM", "WHERE").Trim(); table.Type = "Table"; table.Name = tableName.ToLower(); } AddProperty(select, "From", table); //Criteria without order by if (statement.Contains("WHERE") && !statement.Contains("ORDER BY")) { dynamic where = new ExpandoObject(); var wherePhrase = SubstringExtensions.Between(statement, "WHERE", ";").Trim(); var whereArray = wherePhrase.Split(' '); int counter = 0; foreach (var oper in ComparisonOperators) { for (int i = 0; i < whereArray.Length; i++) { if (oper == whereArray[i]) { dynamic crit = new ExpandoObject(); crit.Left = whereArray[i - 1]; crit.Operator = oper; crit.Right = SubstringExtensions.After(wherePhrase, oper).Trim(); AddProperty(where, counter++.ToString(), crit); } } } if (tableNameAndAliases.Contains("AS")) { var tableName = SubstringExtensions.Between(statement, "FROM", "AS").Trim(); var alises = SubstringExtensions.Between(statement, "AS", "WHERE").Trim(); table.Type = "Table"; table.Name = tableName.ToLower(); table.Alises = alises.ToLower(); } else { var tableName = SubstringExtensions.Between(statement, "FROM", "WHERE").Trim(); table.Type = "Table"; table.Name = tableName.ToLower(); } AddProperty(select, "Where", where); } else if (statement.Contains("WHERE") && statement.Contains("ORDER BY")) { dynamic where = new ExpandoObject(); var wherePhrase = SubstringExtensions.Between(statement, "WHERE", "ORDER BY").Trim(); var whereArray = wherePhrase.Split(' '); int counter = 0; foreach (var oper in ComparisonOperators) { for (int i = 0; i < whereArray.Length; i++) { if (oper == whereArray[i]) { dynamic crit = new ExpandoObject(); crit.Left = whereArray[i - 1]; crit.Operator = oper; crit.Right = SubstringExtensions.After(wherePhrase, oper).Trim(); AddProperty(where, counter++.ToString(), crit); } } } if (tableNameAndAliases.Contains("AS")) { var tableName = SubstringExtensions.Between(statement, "FROM", "AS").Trim(); var alises = SubstringExtensions.Between(statement, "AS", "WHERE").Trim(); table.Type = "Table"; table.Name = tableName.ToLower(); table.Alises = alises.ToLower(); } else { var tableName = SubstringExtensions.Between(statement, "FROM", "WHERE").Trim(); table.Type = "Table"; table.Name = tableName.ToLower(); } AddProperty(select, "Where", where); //Order by var orderPhrase = SubstringExtensions.Between(statement, "ORDER BY", ";").Trim(); dynamic orderBy = new ExpandoObject(); orderBy.Type = "Order by"; orderBy.column = orderPhrase; AddProperty(select, "Where", orderBy); } return(select); }