Exemplo n.º 1
0
        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
            };
        }
Exemplo n.º 2
0
        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"));
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 5
0
        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;
        }
Exemplo n.º 6
0
        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);
 }
Exemplo n.º 10
0
 public void CreateAsync(AvitarDto player) => Avitars.Add(player.Id, player);