public MainViewModel()
        {
            _set = Settings.Load();

            StarListenerCommand = new RealyCommand(StarListener);
            StartParsingCommand = new RealyCommand(StartParsing);
            StopParsingCommand  = new RealyCommand(StopParsing);
            UpdateBaseCommand   = new RealyCommand(UpdateBase);

            List <Bookmaker> bookmakers = new List <Bookmaker>
            {
                new Bookmaker()
                {
                    Name = "Olimp", Site = _set.OlimpUrl
                },
                new Bookmaker()
                {
                    Name = "Fonbet", Site = _set.FonbetUrl
                },
                new Bookmaker()
                {
                    Name = "Marafon", Site = _set.MarafonUrl
                },
                new Bookmaker()
                {
                    Name = "Zenit", Site = _set.ZenitUrl
                },
                new Bookmaker()
                {
                    Name = "Parimatch", Site = _set.PariMatchUrl
                }
            };

            Bookmakers = new ObservableCollection <Bookmaker>(bookmakers);

            _manager    = new ParserManager(_set.OlimpUrl, _set.FonbetUrl, _set.MarafonUrl, _set.ZenitUrl, _set.PariMatchUrl, _set.UsingProxy);
            _forkFinder = new ForkFinder(_manager);
            _server     = new ServerManager(_forkFinder);

            //Проверяем был ли сервер запущен после обновления
            string[] args     = Environment.GetCommandLineArgs();
            bool     isUpdate = false;

            foreach (string arg in args)
            {
                if (arg != "update")
                {
                    continue;
                }
                isUpdate = true;
                break;
            }
            if (isUpdate)
            {
                StarListenerCommand.Execute(null);
#if !DEBUG
                StartParsingCommand.Execute(null);
#endif
            }
        }
        public void Should_invoke_default_parser()
        {
            var defaultParser = new List <IDefaultParser>()
            {
                new DefaultParser()
            };
            var genericParser = new List <IGenericParser>()
            {
                new GenericParser()
            };
            var gameParser = new List <IGameParser>()
            {
                new GameParser()
            };

            var manager = new ParserManager(gameParser, genericParser, defaultParser);
            var result  = manager.Parse(new ParserManagerArgs()
            {
                File     = "fake",
                GameType = "game"
            });

            result.First().File.Should().Be("default_parser");
            result.First().UsedParser.Should().Be("DefaultParser");
        }
 private void StartParsing()
 {
     if (!Start)
     {
         if (_manager == null)
         {
             _manager = new ParserManager(_set.OlimpUrl, _set.FonbetUrl, _set.MarafonUrl, _set.ZenitUrl, _set.PariMatchUrl, _set.UsingProxy);
         }
         _manager.Start();
         if (_forkFinder == null)
         {
             _forkFinder = new ForkFinder(_manager);
         }
         _forkFinder.Start();
         foreach (var key in Bookmakers)
         {
             key.Status = WorkStatus.Work;
         }
         Logger.Write("Сбор данных успешно запущен!");
         Start = true;
     }
     else
     {
         MessageBox.Show("Парсинг уже запущен!");
     }
 }
Exemple #4
0
        public static Project ParseProject(IEnumerable <string> sourceFiles, bool runInSerial)
        {
            var files        = runInSerial ? sourceFiles : sourceFiles.AsParallel();
            var languageList = new List <ILanguageParser>();

            var parsedFiles = files.Select(path =>
            {
                Report.Message("Parsing", path);

                // Parse source files.
                ILanguageParser language;
                try
                {
                    language = ParserManager.GetParserByExtension(Path.GetExtension(path));
                }
                catch (NotSupportedException e)
                {
                    Report.Error(p => p.DescriptionReasonLocation(ReportGenre.FileRead, e.Message, path), e);
                    return(null);
                }

                languageList.AddIf(p => languageList.Select(p2 => p2.Identifier).All(i => i != p.Identifier), language);
                var source = OtherUtils.ReadAllText(path);
                return(language.Parse(path, source));
            })
                              .ToList();

            var project = new Project(parsedFiles);

            new Traverser("Global post processing", languageList.SelectMany(p => p.GlobalTraverserActions).ToArray()).Go(project);
            return(project);
        }
Exemple #5
0
        private void button8_Click(object sender, EventArgs e)
        {
            ParserManager pm = new ParserManager();

            textBox1.Text = pm.supportedFileTypies + "\n";
            textBox1.Text = textBox1.Text + pm.GetSupportedFilesCount();
        }
Exemple #6
0
        private void button3_Click(object sender, EventArgs e)
        {
            ParserManager pm = new ParserManager();
            Action        a  = new Action(pm.ParseAll);
            Task          t  = new Task(a);

            t.Start();
        }
Exemple #7
0
        public static Parser GetParser()
        {
            var settings = new ParserSettings
            {
                Algorithm   = Parser.Algorithm.LL,
                NestingType = Parser.NestingType.Stack,
                Unit        = Parser.Unit.Character,
            };

            Parser parser = new ParserManager(GetGrammar(), settings);

            return(parser);
        }
        // GET: api/GooglePlay?id=com.rockstargames.gtavc
        public object Get(string id)
        {
            if (id == null)
            {
                return new
                       {
                           error = "Название пакета не может быть пустым!"
                       }
            }
            ;

            if (!Applications.ContainsKey(id))
            {
                HtmlDocument doc = null;

                try
                {
                    doc = ParserManager.GetPageDocument(id);
                }
                catch (Exception ex)
                {
                    return(new
                    {
                        error = $"Такого приложения на Google Play не существует."
                    });
                }

                try
                {
                    ApplicationModel app = ParserManager.GetApplicationData(doc, id);
                    if (!app.Verify())
                    {
                        return new
                               {
                                   error = $"Объект собран не полностью."
                               }
                    }
                    ;
                    Applications[app.PackageName] = app;
                    return(app);
                }
                catch (Exception ex)
                {
                    return(new
                    {
                        error = ex.Message
                    });
                }
            }
            return(Applications[id]);
        }
        internal static SearchExpression ExpandParser(SearchExpressionParserArgs args)
        {
            var outerText = args.text;
            var text      = ParserUtils.SimplifyExpression(outerText);

            if (!text.StartsWith("...", System.StringComparison.Ordinal))
            {
                return(null);
            }

            var expression = ParserManager.Parse(args.With(text.Substring(3)));

            return(new SearchExpression(expression, expression.types | SearchExpressionType.Expandable, outerText, expression.innerText));
        }
Exemple #10
0
        private ParserInfo GetParserInfo()
        {
            string parserName = this.cboParser.Text;

            ParserInfo info = ParserManager.GetParserInfoByName(parserName);

            if (info == null)
            {
                MessageBox.Show($"Can't get ParserInfo for parser \"{parserName}\".");
                return(null);
            }

            return(info);
        }
Exemple #11
0
        public DataSet Execute(string sql)
        {
            var parserManager = new ParserManager(Configuration);

            var parseStatementsResult = parserManager.ParseStatements(sql);

            if (parseStatementsResult.Errors.Any())
            {
                var sb = new StringBuilder();

                foreach (var error in parseStatementsResult.Errors)
                {
                    sb.AppendLine($"{error.Message}");
                }

                throw new Exception(sb.ToString());
            }

            var statements = parseStatementsResult.Value;

            var dataSet = new DataSet();

            using (var service = OrganizationService.Create(Credential))
            {
                foreach (var statement in statements)
                {
                    if (statement is SelectStatement)
                    {
                        var crmInstance  = new CRMInstance(service);
                        var selectEngine = new SelectEngine(crmInstance, Configuration);

                        var selectStatement = (SelectStatement)statement;

                        var dt = selectEngine.Execute(selectStatement);

                        dataSet.Tables.Add(dt);
                    }
                    else if (statement is UpdateStatement)
                    {
                        throw new NotSupportedException($"'Update' statement is currently not supported.");
                    }
                    else if (statement is DeleteStatement)
                    {
                        throw new NotSupportedException($"'Delete' statement is currently not supported.");
                    }
                }
            }

            return(dataSet);
        }
Exemple #12
0
        public IActionResult Index()
        {
            var sessions = JArray.Parse(System.IO.File.ReadAllText(@"D:\User\Desktop\response_1589728162482.json"));

            var results = ParserManager.ParseTestResults(sessions);

            HierarchicalClustering.ComputeMultiple(0.5f, results.Clusters);
            Log.Information("Tests count: {tcount}, clusters count {ccount}, cluster depth: {depth}",
                            results.Clusters.Count, HierarchicalClustering.Output.Count, HierarchicalClustering.Output.Max(c => c.Depth));

            ViewBag.Width   = HierarchicalClustering.Output.Max(c => c.Depth) * 150 + 460;
            ViewBag.Height  = results.Clusters.Count * 30;
            ViewBag.Cluster = ClusterSerializer.Serialize(HierarchicalClustering.Output);
            return(View());
        }
Exemple #13
0
        private static async void StartTimer(object obj)
        {
            Console.WriteLine("Парсинг и обновление по таймеру начато");


            await ParserManager.Run();

            ParserManager.Push();

            await ParserManager.Update();

            ArticleStateSolver.Solve();

            Console.WriteLine("Парсинг и обновление по таймеру окончено");
        }
        protected override void OnStart(string[] args)
        {
            var parser = new ParserManager();

            parser.MakeParsed(args[0]);
            sourceDirectoryPath = parser.SourcePath;
            targetDirectoryPath = parser.TargetPath;
            if (sourceDirectoryPath == null || targetDirectoryPath == null)
            {
                throw new NullReferenceException("Wrong path!");
            }
            mods = parser.Mods;

            logger = new Logger(sourceDirectoryPath, targetDirectoryPath, mods);
            Thread loggerThread = new Thread(new ThreadStart(logger.Start));

            loggerThread.Start();
        }
Exemple #15
0
        private static void Main()
        {
            try
            {
                var manager = new ParserManager();

                using (manager.ParserManagerInformation.Subscribe(Console.WriteLine))
                {
                    manager.Start();
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }

            Console.WriteLine("Finished. Press any key to exit...");
            Console.ReadKey(true);
        }
Exemple #16
0
        static async Task Main(string[] args)
        {
            string inputCommand;

            int           timerStep = 7200000;
            TimerCallback tm        = new TimerCallback(StartTimer);

            while (true)
            {
                Console.Write(">");
                inputCommand = Console.ReadLine();

                switch (inputCommand)
                {
                case "s":
                    await ParserManager.Run();

                    ParserManager.Push();
                    Console.WriteLine("Парсинг окончен");
                    break;

                case "u":
                    await ParserManager.Update();

                    ArticleStateSolver.Solve();
                    break;

                case "s t":
                    Timer timer = new Timer(tm, null, 0, timerStep);
                    break;

                case "q":
                    return;

                default:
                    Console.WriteLine("Команда не найдена");
                    break;
                }
            }
        }
        public object Post([FromBody] PackageModel model)
        {
            ApplicationModel app = null;
            HtmlDocument     doc = null;

            try
            {
                doc = ParserManager.GetPageDocument(model.GetPackageName());
            }
            catch (Exception ex)
            {
                return(new
                {
                    error = $"Такого приложения на Google Play не существует."
                });
            }

            try
            {
                app = ParserManager.GetApplicationData(doc, model.GetPackageName());
                if (!app.Verify())
                {
                    return new
                           {
                               error = $"Объект собран не полностью."
                           }
                }
                ;
                Applications[app.PackageName] = app;
            }
            catch (Exception ex)
            {
                return(new
                {
                    error = $"Серверная ошибка. [DEBUG DATA (not for production)]: {ex.Message}."
                });
            }
            return(app);
        }
Exemple #18
0
        private void button1_Click(object sender, EventArgs e)
        {
            var input = this.textBox1.Text.Trim();

            if (string.IsNullOrEmpty(input))
            {
                return;
            }
            foreach (var item in ParserManager.GetLinks(input))
            {
                var parser = ParserManager.GetNewsParser(item);
                if (parser == null)
                {
                    continue;
                }
                this.newList.Add(new NewsModel()
                {
                    Author           = parser.Author,
                    Content          = parser.Content,
                    ContentSourceUrl = parser.Url,
                    Url              = string.Empty,
                    CreatedBy        = string.Empty,
                    CreatedOn        = DateTime.UtcNow,
                    UpdatedBy        = string.Empty,
                    UpdatedOn        = DateTime.UtcNow,
                    Digest           = parser.Digest,
                    Id               = Guid.NewGuid().ToString("N"),
                    IsReleased       = false,
                    LastUpdateTime   = DateTime.UtcNow,
                    MaterialID       = string.Empty,
                    MediaId          = string.Empty,
                    OfficialAccount  = string.Empty,
                    ShowCoverPicture = false,
                    SortBy           = 0,
                    ThumbMediaId     = parser.ThumbMedia,
                    Title            = parser.Title
                });
            }
        }
Exemple #19
0
        static void Parse(string language)
        {
            CodeParserTest codeParserTest = ParserHelper.GetParserTest(language);

            if (codeParserTest != null)
            {
                ParserInfo info = ParserManager.GetParserInfoByLanguage(language);

                if (info != null)
                {
                    codeParserTest.Parse(info);
                }
                else
                {
                    Console.WriteLine($"Can't get ParserInfo for language \"{language}\".");
                }
            }
            else
            {
                Console.WriteLine($"There's no parser test class for language \"{language}\".");
            }
        }
Exemple #20
0
    public void OnClickSave()
    {
        float[] value = new float[_Edits.Length];

        for (int i = 0; i < _Edits.Length; ++i)
        {
            UIInput input = _Edits[i].transform.Find("Input").GetComponent <UIInput>();

            if (input.value == "")
            {
                value[i] = -1000f;
            }
            else
            {
                value[i] = float.Parse(input.value);
            }

            //LogManager.Log(_Edits[i].name + " : " + value[i]);
        }

        ParserManager.DeveloperSetting(value);

        SceneChangeManager.Change_Scene("Proto");
    }
Exemple #21
0
        public PythonSiteImpl(IPythonRuntime runtime)
        {
            string name       = runtime.GetType().Name;
            string configPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            string dbPath     = PathCombine(configPath, "MonoDevelop", "PyBinding", "Sites", name, "completion.db");

            m_pathsPath = PathCombine(configPath, "MonoDevelop", "PyBinding", "Sites", name, "paths");

            if (File.Exists(m_pathsPath))
            {
                foreach (var line in File.ReadAllLines(m_pathsPath))
                {
                    string trimmed = line.Trim();
                    if (!String.IsNullOrEmpty(line))
                    {
                        m_Paths.Add(trimmed);
                    }
                }
            }

            m_Database = new ParserDatabase(dbPath);
            m_Database.Open();
            m_parser = ParserManager.GetParser(runtime);
        }
        private void ParseHTML(CommandLineLogger logger, ParserVersionEnum version, string caseName, ref bool hasPreservation)
        {
            Stopwatch stopWatch = new Stopwatch();

            logger.LogInfo("Begin parsing files.");
            stopWatch.Start();
            foreach (ExtractFileInfo htmlx in _htmlToParse)
            {
                ParserManager parser = new ParserManager(logger)
                {
                    CaseNumber     = caseName,
                    HtmlToLoad     = htmlx.File_Path,
                    HtmlToRecord   = htmlx.IsTemporary ? htmlx.ParentFile_Path : htmlx.File_Path,
                    IsPreservation = false,
                    DatabasePreservationNoPrefix = string.Empty,
                    Version          = version,
                    DefaultDirectory = _defaultDirectory
                };

                logger.LogInfo("Processing " + htmlx.File_Path);
                try
                {
                    if (htmlx.File_Path.ToLower().Contains("preservation"))
                    {
                        hasPreservation = true;
                        /*Preservation-1, Preservation-2, Preservation-3  */
                        parser.IsPreservation = true;
                        DirectoryInfo di = new DirectoryInfo(htmlx.File_Path);
                        string        p  = di.Parent.Name; //goes up to parent directory, preservation
                        if (!p.ToLower().Contains("preservation"))
                        {
                            p = di.Parent.Parent.Name;                             //goes up to parent directory, preservation\folderX\index.html
                        }
                        parser.DatabasePreservationNoPrefix = p.Replace("-", "_"); //sqllite doesn't like sql queries ref tables with a '-', change to '_'
                    }

                    if (!htmlx.File_Name.ToUpper().Contains("PRESERVATION"))
                    {
                        switch (htmlx.File_Name.ToUpper().Trim())
                        {
                        case "ABOUT_ME.HTML":
                            parser.AboutMeParse(htmlx);
                            break;

                        case "ACCOUNT_STATUS_HISTORY.HTML":
                            parser.AccountStatusHistoryParse(htmlx);
                            break;

                        case "COMMENTS.HTML":
                            parser.CommentsParse(htmlx);
                            break;

                        case "DEVICES.HTML":
                            parser.DevicesParse(htmlx);
                            break;

                        case "DIRECT_SHARES.HTML":
                            parser.DirectSharesParse(htmlx);
                            break;

                        case "DIRECT_STORIES.HTML":
                            parser.DirectStoriesParse(htmlx);
                            break;

                        case "FOLLOWERS.HTML":
                            parser.FollowersParse(htmlx);
                            break;

                        case "FOLLOWING.HTML":
                            parser.FollowingParse(htmlx);
                            break;

                        case "GENDER.HTML":
                            parser.GenderParse(htmlx);
                            break;

                        case "INCOMING_FOLLOW_REQUESTS.HTML":
                            parser.IncomingFollowRequestsParse(htmlx);
                            break;

                        case "INDEX.HTML":
                            parser.IndexParse(htmlx);
                            break;

                        case "LIKES.HTML":
                            parser.LikesParse(htmlx);
                            break;

                        case "LINKED_ACCOUNTS.HTML":
                            parser.LinkedAccountsParse(htmlx);
                            break;

                        case "LIVE_VIDEOS.HTML":
                            parser.LiveVideosParse(htmlx);
                            break;

                        case "UNIFIED_MESSAGES.HTML":
                            parser.UnifiedMessagesParse(htmlx);
                            break;

                        case "NAME_CHANGES.HTML":
                            parser.NameChangesParse(htmlx);
                            break;

                        case "NCMEC_REPORTS.HTML":
                            parser.NcmecReportsParse(htmlx);
                            break;

                        case "PHOTOS.HTML":
                            parser.PhotosParse(htmlx);
                            break;

                        case "POPULAR_BLOCK.HTML":
                            parser.PopularBlockParse(htmlx);
                            break;

                        case "PRIVACY_SETTINGS.HTML":
                            parser.PrivacySettingsParse(htmlx);
                            break;

                        case "PROFILE_PICTURE.HTML":
                            parser.ProfilePictureParse(htmlx);
                            break;

                        case "VANITY_CHANGES.HTML":
                            parser.VanityChangesParse(htmlx);
                            break;

                        case "VIDEOS.HTML":
                            parser.VideosParse(htmlx);
                            break;

                        case "WEBSITE.HTML":
                            parser.WebsiteParse(htmlx);
                            break;

                        default:
                            logger.LogWarning("Unknown Section - \"Unknown section:" + htmlx.File_Name + "\".  Please contact NDCAC with section name and test data to improve parsing functionality");
#if DEBUG
                            throw new ApplicationException(htmlx.File_Name);
#endif
                            break;
                        }
                    }
                    if (parser.LocationData != null && parser.LocationData.Any())
                    {
                        _locationData.AddRange(parser.LocationData);
                    }
                    AddSectionToPreservationList(htmlx.File_Name, parser.PreservationQueries);
                }
                catch (SectionEmptyException ex)
                {
                    logger.LogWarning("Parsing " + ex.Message + " section complete - section contains no data: Excluding from database.");
                }
                catch (MissingTestDataException ex)
                {
                    logger.LogWarning("Parsing " + ex.Message + " section skipped - parser not implemented: No test data available.");
                }
                catch (NotImplementedException ex)
                {
                    logger.LogError("Parsing " + ex.Message + " section failed: parser not implemented.", ex);
                }
            }
            WriteLocationData(caseName);
            stopWatch.Stop();
            logger.LogInfo("Parsing files complete (Time: " + stopWatch.Elapsed.GetFormattedElapsedTime() + ")... ");
        }
        // Дополнительные сведения о настройке аутентификации см. на странице https://go.microsoft.com/fwlink/?LinkId=301864
        public void ConfigureAuth(IAppBuilder app)
        {
            string[] defaultApps = new string[] { "com.rockstargames.gtavc", "com.ovelin.guitartuna",
                                                  "ru.sberbankmobile", "com.bethsoft.theelderscrollslegends", "com.wolfram.android.alpha" };
            foreach (var package in defaultApps)
            {
                try
                {
                    HtmlDocument     doc    = ParserManager.GetPageDocument(package);
                    ApplicationModel curApp = ParserManager.GetApplicationData(doc, package);
                    GooglePlayController.Applications[package] = curApp;
                }
                catch { }
            }



            // Настройка контекста базы данных, диспетчера пользователей и диспетчера входа для использования одного экземпляра на запрос
            app.CreatePerOwinContext(ApplicationDbContext.Create);
            app.CreatePerOwinContext <ApplicationUserManager>(ApplicationUserManager.Create);
            app.CreatePerOwinContext <ApplicationSignInManager>(ApplicationSignInManager.Create);

            // Включение использования файла cookie, в котором приложение может хранить информацию для пользователя, выполнившего вход,
            // и использование файла cookie для временного хранения информации о входах пользователя с помощью стороннего поставщика входа
            // Настройка файла cookie для входа
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath          = new PathString("/Account/Login"),
                Provider           = new CookieAuthenticationProvider
                {
                    // Позволяет приложению проверять метку безопасности при входе пользователя.
                    // Эта функция безопасности используется, когда вы меняете пароль или добавляете внешнее имя входа в свою учетную запись.
                    OnValidateIdentity = SecurityStampValidator.OnValidateIdentity <ApplicationUserManager, ApplicationUser>(
                        validateInterval: TimeSpan.FromMinutes(30),
                        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
                }
            });
            app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

            // Позволяет приложению временно хранить информацию о пользователе, пока проверяется второй фактор двухфакторной проверки подлинности.
            app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));

            // Позволяет приложению запомнить второй фактор проверки имени входа. Например, это может быть телефон или почта.
            // Если выбрать этот параметр, то на устройстве, с помощью которого вы входите, будет сохранен второй шаг проверки при входе.
            // Точно так же действует параметр RememberMe при входе.
            app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);

            // Раскомментируйте приведенные далее строки, чтобы включить вход с помощью сторонних поставщиков входа
            //app.UseMicrosoftAccountAuthentication(
            //    clientId: "",
            //    clientSecret: "");

            //app.UseTwitterAuthentication(
            //   consumerKey: "",
            //   consumerSecret: "");

            //app.UseFacebookAuthentication(
            //   appId: "",
            //   appSecret: "");

            //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
            //{
            //    ClientId = "",
            //    ClientSecret = ""
            //});
        }
Exemple #24
0
 public FieldBackedConfigValue(FieldInfo field, object instance)
 {
     this.field    = field;
     this.instance = instance;
     parser        = ParserManager.GetParser(ValueType);
 }
Exemple #25
0
        static AqsParser()
        {
            bool flag = AqsParser.IsOsVersionOrLater(6, 1);

            if (flag)
            {
                AqsParser.CanonicalKeywords = new Dictionary <PropertyKeyword, string>
                {
                    {
                        PropertyKeyword.From,
                        "System.StructuredQuery.Virtual.From"
                    },
                    {
                        PropertyKeyword.To,
                        "System.StructuredQuery.Virtual.To"
                    },
                    {
                        PropertyKeyword.Cc,
                        "System.StructuredQuery.Virtual.Cc"
                    },
                    {
                        PropertyKeyword.Bcc,
                        "System.StructuredQuery.Virtual.Bcc"
                    },
                    {
                        PropertyKeyword.Participants,
                        "System.ItemParticipants"
                    },
                    {
                        PropertyKeyword.Subject,
                        "System.Subject"
                    },
                    {
                        PropertyKeyword.Body,
                        "System.Search.Contents"
                    },
                    {
                        PropertyKeyword.Sent,
                        "System.Message.DateSent"
                    },
                    {
                        PropertyKeyword.Received,
                        "System.Message.DateReceived"
                    },
                    {
                        PropertyKeyword.Attachment,
                        "System.Message.AttachmentContents"
                    },
                    {
                        PropertyKeyword.PolicyTag,
                        "System.Communication.PolicyTag"
                    },
                    {
                        PropertyKeyword.Expires,
                        "System.Communication.DateItemExpires"
                    },
                    {
                        PropertyKeyword.HasAttachment,
                        "System.Message.HasAttachments"
                    },
                    {
                        PropertyKeyword.Category,
                        "System.Category"
                    },
                    {
                        PropertyKeyword.IsFlagged,
                        "System.IsFlagged"
                    },
                    {
                        PropertyKeyword.IsRead,
                        "System.StructuredQuery.Virtual.IsRead"
                    },
                    {
                        PropertyKeyword.Importance,
                        "System.Importance"
                    },
                    {
                        PropertyKeyword.Size,
                        "System.Size"
                    },
                    {
                        PropertyKeyword.Kind,
                        "System.Kind"
                    }
                };
                AqsParser.CanonicalKindKeys = AqsParser.KindKeywordMap.ToDictionary((KeyValuePair <string, KindKeyword> x) => x.Value, (KeyValuePair <string, KindKeyword> x) => string.Format("System.Kind#{0}", x.Key));
            }
            else
            {
                AqsParser.CanonicalKeywords = (from x in Enum.GetValues(typeof(PropertyKeyword)).OfType <PropertyKeyword>()
                                               where x != PropertyKeyword.All
                                               select x).ToDictionary((PropertyKeyword x) => x, (PropertyKeyword x) => Enum.GetName(typeof(PropertyKeyword), x));
                AqsParser.CanonicalKindKeys = Enum.GetValues(typeof(KindKeyword)).OfType <KindKeyword>().ToDictionary((KindKeyword x) => x, (KindKeyword x) => Enum.GetName(typeof(KindKeyword), x));
            }
            using (ParserManager parserManager = new ParserManager())
            {
                using (Parser parser = parserManager.CreateLoadedParser(CultureInfo.CurrentCulture))
                {
                    parserManager.InitializeOptions(false, true, parser);
                    parser.Parse("foo").Dispose();
                }
            }
        }
Exemple #26
0
        internal Condition Parse(string query, AqsParser.ParseOption parseOption, CultureInfo cultureInfo)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            if (cultureInfo == null)
            {
                throw new ArgumentNullException("cultureInfo");
            }
            this.parseOption = parseOption;
            if (this.SupportNqs && !this.SuppressError)
            {
                throw new ArgumentException("parserOption: NQS must be combined with SuppressError");
            }
            if (this.UseCiKeywordOnly && this.UseBasicKeywordOnly)
            {
                throw new ArgumentException("UseBasicKeywordOnly can not be combined with UseCIKeywordOnly");
            }
            if (this.UseCiKeywordOnly)
            {
                this.AllowedKeywords = PropertyKeywordHelper.CiPropertyKeywords;
            }
            else if (this.UseBasicKeywordOnly)
            {
                this.AllowedKeywords = PropertyKeywordHelper.BasicPropertyKeywords;
            }
            Condition result;

            try
            {
                int num = 0;
                int i   = 0;
                while (i < query.Length)
                {
                    char c = query[i];
                    if (c == '(' && ++num > 50)
                    {
                        if (this.SuppressError)
                        {
                            return(null);
                        }
                        throw new ParserException(new ParserErrorInfo(ParserErrorCode.ParserError));
                    }
                    else
                    {
                        i++;
                    }
                }
                using (ParserManager parserManager = new ParserManager())
                {
                    using (Parser parser = parserManager.CreateLoadedParser(cultureInfo))
                    {
                        parserManager.InitializeOptions(this.SupportNqs, !this.DisablePrefixMatch, parser);
                        using (Solution solution = parser.Parse(query))
                        {
                            List <ParserErrorInfo> list = new List <ParserErrorInfo>();
                            if (!this.SuppressError)
                            {
                                this.PreResolvingValidate(solution, list);
                                if (list.Count > 0)
                                {
                                    throw new ParserException(list);
                                }
                            }
                            ResolveOptions resolveOptions = 0;
                            if (!this.SplitWords)
                            {
                                resolveOptions |= 64;
                            }
                            Condition condition = solution.Resolve(solution.Condition, resolveOptions, (DateTime)ExDateTime.Now);
                            if (condition == null && !this.SuppressError)
                            {
                                throw new ParserException(new ParserErrorInfo(ParserErrorCode.ParserError));
                            }
                            if (!this.SuppressError)
                            {
                                this.ValidateConditionTree(solution, condition, list, true);
                                if (list.Count > 0)
                                {
                                    throw new ParserException(list);
                                }
                            }
                            result = condition;
                        }
                    }
                }
            }
            catch (StructuredQueryException innerException)
            {
                if (!this.SuppressError)
                {
                    throw new ParserException(new ParserErrorInfo(ParserErrorCode.StructuredQueryException), innerException);
                }
                result = null;
            }
            return(result);
        }
 public ForkFinder(ParserManager manager)
 {
     _manager = manager;
 }
Exemple #28
0
        private static void SearchFork()
        {
            var parsers = new List<Tuple<string, IParser>>
            {
                new Tuple<string, IParser>("Marathon", new MarathonParser(new List<GameParser>{ new FootballParser() },
                                                                          new MarketsProviderManager(new List<IMarketsProvider> { new LocalMarketsProvider() }))),
                new Tuple<string, IParser>("Zenit", new ZenitBetParser(new WebPageProvider(new ZenitDomainProvider()), new List<IGameParser> { new FootballGameParser() })),
            };

            var activeParsers = SelectParserMenu(parsers);
            var grouper = new GameGrouper();
            var parserManager = new ParserManager(new StubParserProvider(activeParsers), grouper);
            var forkSearcherManager = new ForkSearcherManager(new ForkSearcher(new TextRulesProvider(File.ReadAllText(Settings.Default.PathToRules))));

            var core = new Core(parserManager, forkSearcherManager);
            core.OnReceivedMainForks += ViewForks;
            core.Run(new List<SportType> { "Футбол" });
            //    .Where(x => x.ProfitRate > 1)
            //    .OrderBy(x => x.ProfitRate)
            //    .Reverse()
            //    .ToList();
            //if (forks.Count == 0)
            //{
            //    Console.WriteLine("The forks not found");
            //}
            //else
            //{
            //    for (var i = 0; i < forks.Count; i++)
            //    {
            //        var fork = forks[i];
            //        const int BetToFirstOne = 100;
            //        var betTosecondOne = BetToFirstOne * fork.CoefsOfFirstBets.ElementAt(0).Value.Get()
            //                             / fork.CoefsOfSecondBets.ElementAt(0).Value.Get();
            //        decimal sum;
            //        Console.WriteLine($"{i + 1}. {fork.SportType} - Profit = {fork.ProfitRate}");
            //        if (fork.CoefsOfFirstBets.Count < 2 && (fork.CoefsOfSecondBets.Count < 2))
            //        {
            //            Console.WriteLine(
            //                $"Ставка в 1-ой конторе = {BetToFirstOne}; " + $"Во 2-ой конторе = {betTosecondOne: #0.###}");
            //            sum = (betTosecondOne + BetToFirstOne) / 100 * fork.ProfitRate;
            //        }
            //        else if ((fork.CoefsOfFirstBets.Count > 1) && (fork.CoefsOfSecondBets.Count < 2))
            //        {
            //            var betTofirstTwo = BetToFirstOne * fork.CoefsOfFirstBets.ElementAt(0).Value.Get()
            //                                / fork.CoefsOfFirstBets.ElementAt(1).Value.Get();
            //            Console.WriteLine(
            //                $"Cтавка в 1-ой конторе на 1-ое событие = {BetToFirstOne}, "
            //                + $"на 2-ое событие = {betTofirstTwo: #0.###};   "
            //                + $"Во 2-ой конторе = {betTosecondOne: #0.###}");
            //            sum = (betTofirstTwo + BetToFirstOne + betTosecondOne) / 100 * fork.ProfitRate;
            //        }
            //        else
            //        {
            //            var betTosecondTwo = BetToFirstOne * fork.CoefsOfFirstBets.ElementAt(0).Value.Get()
            //                                 / fork.CoefsOfSecondBets.ElementAt(1).Value.Get();
            //            Console.WriteLine(
            //                $"Cтавка в 1-ой конторе на 1-ое событие = {BetToFirstOne}"
            //                + $"Во 2-ой конторе на 1-ое событие = {betTosecondOne: #0.###}, "
            //                + $"на 2-ое событие = {betTosecondTwo: #0.###}");
            //            sum = (betTosecondTwo + betTosecondOne + BetToFirstOne) / 100 * fork.ProfitRate;
            //        }
            //        Console.WriteLine($"Cумма прибыли: {sum: #0.##}р.");
            //        Console.WriteLine($"{fork.FirstGame.Info}");
            //        Console.WriteLine($"Имя конторы - {fork.FirstBetsName}:");
            //        foreach (var type in fork.CoefsOfFirstBets.Keys)
            //        {
            //            Console.WriteLine(
            //                $"{string.Empty.PadRight(5)}Тип ставки: {type.ToString().PadRight(20)}| Коэффициент {fork.CoefsOfFirstBets[type]}");
            //        }

                //        Console.WriteLine($"Имя конторы - {fork.SecondBetsName}:");
                //        foreach (var type in fork.CoefsOfSecondBets.Keys)
                //        {
                //            Console.WriteLine(
                //                $"{string.Empty.PadRight(5)}Тип ставки: {type.ToString().PadRight(20)}| Коэффициент {fork.CoefsOfSecondBets[type]}");
                //        }

                //        Console.WriteLine();
                //    }
                //}
        }