Пример #1
0
        public HomeModule(InMemoryUserRepository inMemoryUserRepository, InMemoryScoreRepository inMemoryScoreRepository)
        {
            Get("/", _ => View["Index"]);

            Get("/Dashboard", _ => View["Dashboard", new DashboardViewModel(inMemoryScoreRepository.GetAll())]);

            Get("/Register", _ => View["Register", RegisterViewModel.Empty()]);

            Post("/Register", _ =>
            {
                var registerParams = this.Bind <RegisterParams>();

                if (inMemoryUserRepository.Exist(registerParams.NormalizedPseudo))
                {
                    return(View["Register", RegisterViewModel.PseudoAlreadyExist()]);
                }

                inMemoryUserRepository.Add(registerParams.NormalizedPseudo);
                inMemoryScoreRepository.Add(registerParams.NormalizedPseudo, 0);

                return(View["Register", RegisterViewModel.Successful(AuthToken.Generate(registerParams.NormalizedPseudo))]);
            });
        }
Пример #2
0
        public StepsModule(AppConfiguration appConfiguration, InMemoryUserRepository inMemoryUserRepository, InMemoryScoreRepository inMemoryScoreRepository, IHubContext notificationHub)
        {
            Func <string, string, int, bool> checkAnswerAndNotify = (string userAnswer, string realAnswer, int step) =>
            {
                var authToken = this.Request.Query["authtoken"];

                var pseudo = AuthToken.Parse(authToken);

                if (!inMemoryUserRepository.Exist(pseudo) || string.IsNullOrEmpty(userAnswer) || userAnswer != realAnswer)
                {
                    return(false);
                }

                inMemoryScoreRepository.Update(pseudo, step);
                notificationHub.Clients.All.send(new { pseudo = pseudo, step = step });

                return(true);
            };

            Get("/endoftheworld", _ => appConfiguration.EndOfTheWorld.ToString("yyyy/MM/dd HH:mm:ss"));

            Get("/step1", _ =>
            {
                var pincode = this.Request.Query["pincode"];

                if (!checkAnswerAndNotify(pincode, Pincode, 1))
                {
                    return(View["Step1"]);
                }

                return(Response.AsRedirect("/Step9861"));
            });

            Get("/step2", _ => View["WrongStep"]);

            Get("/step3", _ => View["WrongStep"]);

            Get("/step9861", _ =>
            {
                var password = this.Request.Query["password"];

                if (!checkAnswerAndNotify(password, Password, 2))
                {
                    return(View["Step2"]);
                }

                return(Response.AsRedirect("/Step2345"));
            });

            Get("/step2345", _ => View["Step3"]);

            Get("/dsamfds", _ =>
            {
                var finalAnswer = this.Request.Query["answer"];

                if (!checkAnswerAndNotify(finalAnswer, FinalAnswer, 3))
                {
                    return(Response.AsRedirect("/step2345"));
                }

                return(View["Step4"]);
            });
        }