Skip to content

Commit a03f523

Browse files
committed
3 - part two
1 parent f0d1d06 commit a03f523

File tree

5 files changed

+96
-17
lines changed

5 files changed

+96
-17
lines changed

package-lock.json

Lines changed: 16 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"prettier": "^1.14.2"
3131
},
3232
"dependencies": {
33+
"petfinder-client": "0.0.1",
3334
"react": "^16.4.2",
3435
"react-dom": "^16.4.2"
3536
}

src/App.js

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,64 @@
11
import React from "react";
22
import ReactDOM from "react-dom";
3+
import pf from "petfinder-client";
34
import Pet from "./Pet";
45

6+
const petfinder = pf({
7+
key: process.env.API_KEY,
8+
secret: process.env.API_SECRET
9+
});
10+
511
class App extends React.Component {
12+
constructor(props) {
13+
super(props);
14+
15+
this.state = {
16+
pets: []
17+
};
18+
}
19+
componentDidMount() {
20+
petfinder.pet
21+
.find({ location: "Seattle, WA", output: "full" })
22+
.then(data => {
23+
let pets;
24+
if (data.petfinder.pets && data.petfinder.pets.pet) {
25+
if (Array.isArray(data.petfinder.pets.pet)) {
26+
pets = data.petfinder.pets.pet;
27+
} else {
28+
pets = [data.petfinder.pets.pet];
29+
}
30+
} else {
31+
pets = [];
32+
}
33+
this.setState({
34+
pets: pets
35+
});
36+
});
37+
}
638
render() {
739
return (
840
<div>
941
<h1>Adopt Me!</h1>
10-
<Pet name="Luna" animal="dog" breed="Havanese" />
11-
<Pet name="Pepper" animal="bird" breed="Cockatiel" />
12-
<Pet name="Doink" animal="cat" breed="Mix" />
42+
<div className="search">
43+
{this.state.pets.map(pet => {
44+
let breed;
45+
if (Array.isArray(pet.breeds.breed)) {
46+
breed = pet.breeds.breed.join(", ");
47+
} else {
48+
breed = pet.breeds.breed;
49+
}
50+
return (
51+
<Pet
52+
animal={pet.animal}
53+
key={pet.id}
54+
name={pet.name}
55+
breed={breed}
56+
media={pet.media}
57+
location={`${pet.contact.city}, ${pet.contact.state}`}
58+
/>
59+
);
60+
})}
61+
</div>
1362
</div>
1463
);
1564
}

src/Pet.js

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,30 @@
11
import React from "react";
22

3-
const Pet = props => {
4-
return (
5-
<div>
6-
<h1>{props.name}</h1>
7-
<h2>{props.animal}</h2>
8-
<h2>{props.breed}</h2>
9-
</div>
10-
);
11-
};
3+
class Pet extends React.Component {
4+
render() {
5+
const { name, animal, breed, media, location } = this.props;
6+
let photos = [];
7+
if (media && media.photos && media.photos.photo) {
8+
photos = media.photos.photo.filter(photo => photo["@size"] === "pn");
9+
}
10+
11+
let hero = "http://placecorgi.com/300/300";
12+
if (photos[0] && photos[0].value) {
13+
hero = photos[0].value;
14+
}
15+
16+
return (
17+
<div className="pet">
18+
<div className="image-container">
19+
<img src={hero} alt={name} />
20+
</div>
21+
<div className="info">
22+
<h1>{name}</h1>
23+
<h2>{`${animal}${breed}${location}`}</h2>
24+
</div>
25+
</div>
26+
);
27+
}
28+
}
1229

1330
export default Pet;

src/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<meta charset="UTF-8">
66
<meta name="viewport" content="width=device-width, initial-scale=1.0">
77
<meta http-equiv="X-UA-Compatible" content="ie=edge">
8+
<link rel="stylesheet" href="./style.css">
89
<title>Pet Adopter</title>
910
</head>
1011

0 commit comments

Comments
 (0)