private async Task WriteValueToResponse(HttpResponse httpResponse, PlayerBalanceDto playerBalanceDto)
        {
            string result = JsonConvert.SerializeObject(playerBalanceDto);

            httpResponse.ContentType = MediaTypeNames.Application.Json;
            httpResponse.StatusCode  = (int)HttpStatusCode.OK;
            await httpResponse.WriteAsync(result);
        }
        private async Task CacheResponse(Stream stream)
        {
            StreamReader streamReader = new StreamReader(stream);

            string responseBody = await streamReader.ReadToEndAsync();

            PlayerBalanceDto playerBalanceDto = JsonConvert.DeserializeObject <PlayerBalanceDto>(responseBody);

            _playerBalanceCache.InsertPlayerBalance(playerBalanceDto.PlayerIdentifier, playerBalanceDto.Balance);
        }
Ejemplo n.º 3
0
        public IActionResult GetBalance(Guid playerIdentifier)
        {
            Maybe <Player> player = _playerRepository.GetByIdentifier(playerIdentifier);

            if (player.HasNoValue)
            {
                return(BadRequest("Player does not exist."));
            }

            PlayerBalanceDto playerBalanceDto = new PlayerBalanceDto
            {
                PlayerIdentifier = playerIdentifier,
                Balance          = player.Value.Wallet.GetBalance().Amount
            };

            return(Ok(playerBalanceDto));
        }
        private Maybe <PlayerBalanceDto> TryGetValueFromCache(HttpContext context)
        {
            Guid playerIdentifier = Guid.Parse((string)context.Request.RouteValues[Constants.PlayerIdentifierArgumentName]);

            Maybe <decimal> cachedBalance = _playerBalanceCache.TryGetCached(playerIdentifier);

            if (cachedBalance.HasNoValue)
            {
                return(Maybe <PlayerBalanceDto> .None);
            }

            PlayerBalanceDto playerBalanceDto = new PlayerBalanceDto()
            {
                PlayerIdentifier = playerIdentifier,
                Balance          = cachedBalance.Value
            };

            return(Maybe <PlayerBalanceDto> .From(playerBalanceDto));
        }
Ejemplo n.º 5
0
        public async Task <PlayerBalanceDto> GetBalance(Guid id, CancellationToken cancellationToken)
        {
            var wallet = await _playerService.GetBalanceAsync(id, cancellationToken).ConfigureAwait(false);

            return(PlayerBalanceDto.Create(wallet));
        }