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
            }
        }
 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("Парсинг уже запущен!");
     }
 }
Example #3
0
        public async Task ThrowsWhenNoPushableForkCanBeFound()
        {
            var fallbackFork = DefaultFork();

            var forkFinder = new ForkFinder(Substitute.For <IGitHub>(), Substitute.For <INuKeeperLogger>());

            var fork = await forkFinder.FindPushFork(ForkMode.PreferFork, "testUser", fallbackFork);

            Assert.That(fork, Is.Null);
        }
Example #4
0
        public async Task ThrowsWhenNoPushableForkCanBeFound()
        {
            var fallbackFork = DefaultFork();

            var forkFinder = new ForkFinder(Substitute.For <IGithub>(),
                                            MakePreferForkSettings(), new NullNuKeeperLogger());

            var fork = await forkFinder.FindPushFork("testUser", fallbackFork);

            Assert.That(fork, Is.Null);
        }
Example #5
0
        public async Task FallbackForkIsNotUsedWhenItIsNotPushable()
        {
            var fallbackFork     = DefaultFork();
            var fallbackRepoData = RepositoryBuilder.MakeRepository(true, false);

            var github = Substitute.For <IGitHub>();

            github.GetUserRepository(fallbackFork.Owner, fallbackFork.Name)
            .Returns(fallbackRepoData);

            var forkFinder = new ForkFinder(github, Substitute.For <INuKeeperLogger>());

            var fork = await forkFinder.FindPushFork(ForkMode.PreferFork, "testUser", fallbackFork);

            Assert.That(fork, Is.Null);
        }
Example #6
0
        public async Task SingleRepoOnlyModeWillNotPreferFork()
        {
            var fallbackFork = DefaultFork();

            var userRepo = RepositoryBuilder.MakeRepository();

            var github = Substitute.For <IGitHub>();

            github.GetUserRepository(Arg.Any <string>(), Arg.Any <string>())
            .Returns(userRepo);

            var forkFinder = new ForkFinder(github, Substitute.For <INuKeeperLogger>());

            var fork = await forkFinder.FindPushFork(ForkMode.SingleRepositoryOnly, "testUser", fallbackFork);

            Assert.That(fork, Is.EqualTo(fallbackFork));
        }
Example #7
0
        public async Task WhenUnsuitableUserForkIsFoundItIsNotUsed()
        {
            var fallbackFork = NoMatchFork();

            var userRepo = RepositoryBuilder.MakeRepository();

            var github = Substitute.For <IGitHub>();

            github.GetUserRepository(Arg.Any <string>(), Arg.Any <string>())
            .Returns(userRepo);

            var forkFinder = new ForkFinder(github, Substitute.For <INuKeeperLogger>());

            var fork = await forkFinder.FindPushFork(ForkMode.PreferFork, "testUser", fallbackFork);

            Assert.That(fork, Is.EqualTo(fallbackFork));
        }
Example #8
0
        public async Task FallbackForkIsUsedWhenItIsFound()
        {
            var fallbackFork     = DefaultFork();
            var fallbackRepoData = RepositoryBuilder.MakeRepository();

            var github = Substitute.For <IGithub>();

            github.GetUserRepository(fallbackFork.Owner, fallbackFork.Name)
            .Returns(fallbackRepoData);

            var forkFinder = new ForkFinder(github,
                                            MakePreferForkSettings(), Substitute.For <INuKeeperLogger>());

            var fork = await forkFinder.FindPushFork("testUser", fallbackFork);

            Assert.That(fork, Is.Not.Null);
            Assert.That(fork, Is.EqualTo(fallbackFork));
        }
Example #9
0
        public async Task WhenSuitableUserForkIsFound_ThatMatchesParentHtmlUrl_ItIsUsedOverFallback()
        {
            var fallbackFork = new ForkData(new Uri(RepositoryBuilder.ParentHtmlUrl), "testOrg", "someRepo");

            var userRepo = RepositoryBuilder.MakeRepository();

            var github = Substitute.For <IGitHub>();

            github.GetUserRepository(Arg.Any <string>(), Arg.Any <string>())
            .Returns(userRepo);

            var forkFinder = new ForkFinder(github, Substitute.For <INuKeeperLogger>());

            var fork = await forkFinder.FindPushFork(ForkMode.PreferFork, "testUser", fallbackFork);

            Assert.That(fork, Is.Not.EqualTo(fallbackFork));
            AssertForkMatchesRepo(fork, userRepo);
        }
Example #10
0
        public async Task WhenSuitableUserForkIsFoundItIsUsedOverFallback()
        {
            var fallbackFork = DefaultFork();

            var userRepo = RepositoryBuilder.MakeRepository();

            var github = Substitute.For <IGithub>();

            github.GetUserRepository(Arg.Any <string>(), Arg.Any <string>())
            .Returns(userRepo);

            var forkFinder = new ForkFinder(github,
                                            MakePreferForkSettings(), Substitute.For <INuKeeperLogger>());

            var fork = await forkFinder.FindPushFork("testUser", fallbackFork);

            Assert.That(fork, Is.Not.EqualTo(fallbackFork));
            AssertForkMatchesRepo(fork, userRepo);
        }
Example #11
0
        public async Task SingleRepoOnlyModeWillNotUseForkWhenUpstreamIsUnsuitable()
        {
            var fallbackFork = DefaultFork();

            var github = Substitute.For <IGitHub>();

            var defaultRepo = RepositoryBuilder.MakeRepository(true, false);

            github.GetUserRepository(fallbackFork.Owner, fallbackFork.Name)
            .Returns(defaultRepo);

            var userRepo = RepositoryBuilder.MakeRepository();

            github.GetUserRepository("testUser", fallbackFork.Name)
            .Returns(userRepo);

            var forkFinder = new ForkFinder(github, Substitute.For <INuKeeperLogger>());

            var fork = await forkFinder.FindPushFork(ForkMode.SingleRepositoryOnly, "testUser", fallbackFork);

            Assert.That(fork, Is.Null);
        }
Example #12
0
        public async Task WhenUserForkIsNotFoundItIsCreated()
        {
            var fallbackFork = DefaultFork();

            var userRepo = RepositoryBuilder.MakeRepository();

            var github = Substitute.For <IGitHub>();

            github.GetUserRepository(Arg.Any <string>(), Arg.Any <string>())
            .Returns((Repository)null);
            github.MakeUserFork(Arg.Any <string>(), Arg.Any <string>())
            .Returns(userRepo);

            var forkFinder = new ForkFinder(github, Substitute.For <INuKeeperLogger>());

            var actualFork = await forkFinder.FindPushFork(ForkMode.PreferFork, "testUser", fallbackFork);

            await github.Received(1).MakeUserFork(Arg.Any <string>(), Arg.Any <string>());

            Assert.That(actualFork, Is.Not.Null);
            Assert.That(actualFork, Is.Not.EqualTo(fallbackFork));
        }
Example #13
0
        public async Task PreferSingleRepoModeWillUseForkWhenUpstreamIsUnsuitable()
        {
            var fallbackFork = DefaultFork();

            var github = Substitute.For <IGithub>();

            var defaultRepo = RepositoryBuilder.MakeRepository(true, false);

            github.GetUserRepository(fallbackFork.Owner, fallbackFork.Name)
            .Returns(defaultRepo);

            var userRepo = RepositoryBuilder.MakeRepository();

            github.GetUserRepository("testUser", fallbackFork.Name)
            .Returns(userRepo);

            var forkFinder = new ForkFinder(github,
                                            MakePreferSingleRepoSettings(), Substitute.For <INuKeeperLogger>());

            var fork = await forkFinder.FindPushFork("testUser", fallbackFork);

            Assert.That(fork, Is.Not.EqualTo(fallbackFork));
            AssertForkMatchesRepo(fork, userRepo);
        }
Example #14
0
 public ServerManager(ForkFinder finder)
 {
     _finder = finder;
 }