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))]); }); }
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"]); }); }