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); }
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); }