-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
72 lines (60 loc) · 2.87 KB
/
script.js
File metadata and controls
72 lines (60 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
function fetchPokemonInfo() {
const pokemonName = document.getElementById('pokemonName').value.toLowerCase();
//grab elements to wich we will display result
const pokemonNameDisplay = document.getElementById('pokemonNameDisplay');
const pokemonTypes = document.getElementById('pokemonTypes');
const pokemonAbilities = document.getElementById('pokemonAbilities');
const pokemonDetails = document.getElementById('pokemonDetails');
//validate input
if (!pokemonName) {
console.warn('NO POKEMON NAME ENTERED')
alert("Please enter a Pokémon name!");
return;
}
const url = `https://pokeapi.co/api/v2/pokemon/${pokemonName}`;
fetch(url)
.then(response => {
//log the raw httpp status(CODE)
console.log('HTTP status code:', response.status)
//demonstrate handaling of VARIOUS status codes
if (response.status===200) {
console.log('Pokémon found HTTP status code:', response.status)
return response.json()
}
else if(response.status===404){
console.error("404 not found and you can go now")
throw new Error('Pokémon not found(404)')
}
else if(response.status===429){
console.error("429 uh... excuse(to many requests)")
throw new Error('rate limit exceeded(429) try again LATER')
}
else if(response.status>=500&& response.status < 600){
console.error(`response status: ${response.status} server error`)
throw new Error(`response status: ${response.status} server error please try again`)
}
else{
console.error(`(${response.status}) unexpected status`)
}
})
.then(data => {
//inspect JSON paylod
console.log(`Raw JSON data: ${data}`)
// Extracting Pokémon information
const name = data.name.charAt(0).toUpperCase() + data.name.slice(1);
console.log('formatted_name: ', name)
const types = data.types.map(type => type.type.name).join(", ");
console.log('types array: ', data.types, 'joined types: ', types)
const abilities = data.abilities.map(ability => ability.ability.name).join(", ");
console.log('abillities array: ', data.abilities, 'joined abbilities: ', abilities)
// Displaying Pokémon info
pokemonNameDisplay.textContent = `Name: ${name}`;
pokemonTypes.textContent = `Types: ${types}`;
pokemonAbilities.textContent = `Abilities: ${abilities}`;
pokemonDetails.style.display = "block";
})
.catch(error => {
alert(error.message);
pokemonDetails.style.display = "none";
});
}