示例#1
0
        public static async Task <bool> SeedMoveData(DataContext context, IMapper mapper)
        {
            for (int i = 1; i < MOVEDATA_ID_RANGE; i++)
            {
                MoveDataForCreationDto md = await GetMoveDataFromAPI(i);

                var mdForCreation = mapper.Map <MoveData>(md);
                context.MoveData_Tbl.Add(mdForCreation);
            }

            return(await context.SaveChangesAsync() > 0);
        }
示例#2
0
        private static async Task <MoveDataForCreationDto> GetMoveDataFromAPI(int moveId)
        {
            var pokeDataUrl = PokeApiUrl + "move/" + moveId;
            MoveDataForCreationDto moveDataForCreationDto = null;

            try
            {
                using (HttpClient client = new HttpClient())
                {
                    using (HttpResponseMessage res = await client.GetAsync(pokeDataUrl))
                    {
                        using (HttpContent content = res.Content)
                        {
                            var pokemonData = await content.ReadAsStringAsync();

                            if (pokemonData == null)
                            {
                                throw new NullReferenceException("PokeAPI call returned null. Check Pokemon Id or base URL being used.");
                            }

                            var dataObj         = JObject.Parse(pokemonData);
                            var name            = dataObj["name"].ToString();
                            var Accuracy        = JtokenParseToFloat(dataObj["accuracy"]);
                            var Effect_Chance   = JtokenParseToFloat(dataObj["effect_chance"]);
                            var AilmentName     = dataObj["meta"]["ailment"]["name"].ToString();
                            var Power           = JtokenParseToFloat(dataObj["power"]);
                            var PP              = Int32.Parse(dataObj["pp"].ToString());
                            var Type            = dataObj["type"]["name"].ToString();
                            var StatChangeName  = GetStatChangeName(dataObj["stat_changes"]);
                            var StatChangeValue = GetStatChangeValue(dataObj["stat_changes"]);
                            var Target          = dataObj["target"]["name"].ToString();
                            moveDataForCreationDto = new MoveDataForCreationDto
                            {
                                Name            = name,
                                MoveId          = moveId,
                                Accuracy        = Accuracy,
                                Effect_Chance   = Effect_Chance,
                                AilmentName     = AilmentName,
                                Power           = Power,
                                PP              = PP,
                                Type            = Type,
                                StatChangeName  = StatChangeName,
                                StatChangeValue = StatChangeValue,
                                Target          = Target
                            };
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception: {0}", ex.Message);
            }

            if (moveDataForCreationDto == null)
            {
                throw new NullReferenceException("MoveData is null. Check API call.");
            }

            return(moveDataForCreationDto);
        }