Ejemplo n.º 1
0
        public async Task <GenericResponse <EliteStatsResponse> > GetStats(string gameUsername)
        {
            // Get corresponding player
            GenericResponse <TUserGame> eliteGame = await _userGameDataAccess.GetUserGame("elite", gameUsername);

            if (!eliteGame.Success)
            {
                return(new GenericResponse <EliteStatsResponse>($"{gameUsername} not found in the database", null));
            }

            // First try to get stats from EDSM
            GenericResponse <EdsmResponse> edsmStats = await _eliteDataAccess.GetEdsmStatsFromSite(gameUsername);

            if (edsmStats.Success)
            {
                await _eliteDataAccess.UpdateCache(edsmStats.Result, eliteGame.Result);

                return(new GenericResponse <EliteStatsResponse>(edsmStats.Result.ConvertToResponse()));
            }
            else
            {
                edsmStats = await _eliteDataAccess.GetEdsmStatsFromCache(gameUsername);
            }

            // Response
            if (edsmStats.Success)
            {
                return(new GenericResponse <EliteStatsResponse>(edsmStats.Result.ConvertToResponse()));
            }
            else
            {
                return(new GenericResponse <EliteStatsResponse>(edsmStats.ErrorMessage, edsmStats.Exception));
            }
        }
Ejemplo n.º 2
0
        public async Task <GenericResponse <Gw2StatsResponse> > GetStats(string gameUsername)
        {
            // Get corresponding player
            GenericResponse <TUserGame> gw2Game = await _userGameDataAccess.GetUserGame("Gw2", gameUsername);

            if (!gw2Game.Success)
            {
                return(new GenericResponse <Gw2StatsResponse>($"{gameUsername} not found in the database", null));
            }

            // First try to get stats from EDSM
            GenericResponse <Gw2StatsResponse> gw2Stats = await _gw2DataAccess.GetGw2StatsFromSite(gameUsername, gw2Game.Result.ApiKey);

            if (gw2Stats.Success)
            {
                await _gw2DataAccess.UpdateCache(gw2Stats.Result, gw2Game.Result);

                return(new GenericResponse <Gw2StatsResponse>(gw2Stats.Result));
            }
            else
            {
                gw2Stats = await _gw2DataAccess.GetGw2StatsFromCache(gameUsername);
            }

            // Response
            if (gw2Stats.Success)
            {
                return(new GenericResponse <Gw2StatsResponse>(gw2Stats.Result));
            }
            else
            {
                return(new GenericResponse <Gw2StatsResponse>(gw2Stats.ErrorMessage, gw2Stats.Exception));
            }
        }