示例#1
0
        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);
        }
示例#2
0
        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 }));
            }
        }
示例#3
0
        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);
        }