public void HandleRequestAsync(RequestModel requestModel, out ResponseModel responseModel) { var maxPlayers = MaxPlayersOrDefault(requestModel.HandCount); var game = GameRepository.FindOpenGame(GameStatus.Waiting, maxPlayers); var avitar = new AvitarDto() { Id = requestModel.PlayerId, UserName = "******", EmailAddress = "*****@*****.**" }; var handCount = HandCountOrDefault(requestModel.HandCount); var player = new BlackJackPlayer(avitar, HandIdProvider, handCount); //TODO: The reay will need to be after some sort of polling game.Status = GameStatus.Ready; game.AddPlayer(player); GameRepository.UpdateAsync(game.Id, game); var gameModel = game.ToModel(game.CurrentPlayer.Identifier); responseModel = new ResponseModel() { Game = gameModel }; }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "CreateAvitar" )] HttpRequest req) { Logger.LogInformation("C# HTTP trigger function processed a request."); string name = req.Query["name"]; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); name = name ?? data?.name; var identifier = new GuidBasedAvitarIdentifierProvider().GenerateAvitar(); var avitar = new AvitarDto() { id = identifier, userName = name }; var response = await Repository.SaveAsync(avitar); Logger.LogInformation(response.Headers.ToString()); return(name != null ? (ActionResult) new OkObjectResult($"Hello, {name}: {identifier}") : new BadRequestObjectResult("Please pass a name on the query string or in the request body")); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = "GetAvitar")] HttpRequest req) { Logger.LogInformation("C# HTTP trigger function processed a request."); string id = req.Query["id"]; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); id = id ?? data?.id; var name = await GetNameFromUrlOrBody(req); var avitar = new AvitarDto() { id = id, userName = name }; var response = await Repository.ReadAsync(avitar); Logger.LogInformation(response.Headers.ToString()); return(response != null ? (ActionResult) new OkObjectResult($"Hello, {response.Resource.id}: {response.Resource.userName}") : new BadRequestObjectResult("Please pass a existing id on the query string or in the request body")); }
public void NewBlackJackPlayer_NullName_ArgumentNullException() { var player = new AvitarDto() { id = "8625cf04-b7e2", userName = null }; Assert.Throws <ArgumentNullException>(() => new BlackJackPlayer(player, HandIdentifierProvider, 1)); }
public BlackJackPlayer(AvitarDto avitar, IHandIdentifierProvider handIdProvider, int handCount) { Name = avitar.UserName ?? throw new ArgumentNullException(nameof(avitar.UserName)); Identifier = avitar.Id; this.handIdProvider = handIdProvider ?? throw new ArgumentNullException(nameof(handIdProvider)); if (handCount < 1) { throw new ArgumentOutOfRangeException(nameof(handCount)); } AddHands(handCount); Status = PlayerStatusTypes.Waiting; }
public void HandleRequestAsync(RequestModel requestModel, IOutputBoundary <ResponseModel> outputBoundary) { _ = requestModel.PlayerName ?? throw new ArgumentNullException(nameof(requestModel.PlayerName)); var identifier = IdentifierProvider.GenerateAvitar(); var player = new AvitarDto() { id = identifier, userName = requestModel.PlayerName }; AvitarRepository.CreateAsync(player); outputBoundary.HandleResponse(new ResponseModel() { AvitarIdentifier = identifier }); }
public async Task <ItemResponse <AvitarDto> > ReadAsync(AvitarDto player) { return(await Container.ReadItemAsync <AvitarDto>(player.id, new PartitionKey(player.userName))); }
public async Task <ItemResponse <AvitarDto> > SaveAsync(AvitarDto player) { return(await Container.UpsertItemAsync(player)); }
public void UpdateAsync(string identifier, AvitarDto player) { Avitars.Remove(identifier); Avitars.Add(identifier, player); }
public void CreateAsync(AvitarDto player) => Avitars.Add(player.Id, player);