Yield generated for d3c9af12-f47f-4d03-9a2d-4a31800c0ce2
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

72 lines
1.5 KiB

import fastify from 'fastify';
// see axios doc on how to use it
import axios from 'axios';
const app = fastify({ logger: true });
app.post('/', async (req, res) => {
return getAll(req.body.countryCode);
});
const getCat = () => {
return new Promise((resolve) => {
axios
.get(
'https://cat-fact.herokuapp.com/facts/random?animal_type=cat&amount=3',
)
.then((res) => {
let facts = [];
let i = 0;
while (i < res.data.length) {
facts.push(res.data[i].text);
i++;
}
resolve(facts);
})
.catch((fail) => resolve(null));
});
};
const getFox = () => {
return new Promise((resolve) => {
axios
.get('https://randomfox.ca/floof/')
.then((res) => {
resolve(res.data.image);
})
.catch((fail) => resolve(null));
});
};
const getCountry = (countryCode) => {
return new Promise((resolve) => {
axios
.get('https://date.nager.at/api/v2/publicholidays/2021/' + countryCode)
.then((res) => {
resolve(res.data);
})
.catch((fail) => resolve(null));
});
};
const getAll = (countryCode) => {
return Promise.all([getCat(), getFox(), getCountry(countryCode)]).then(
(res) => {
let data = {};
data['foxPicture'] = res[1];
data['catFacts'] = res[0];
data['holidays'] = res[2];
return data;
},
);
};
const start = async () => {
try {
await app.listen(5000);
} catch (err) {
app.log.error(err);
process.exit(1);
}
};
start();