From eead1cca3ded7b2304f1c0828923186097d5b9d7 Mon Sep 17 00:00:00 2001 From: "Luiz F. Picolo" Date: Mon, 12 Jun 2023 11:16:15 -0400 Subject: [PATCH] commit inicial --- index.js | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 index.js diff --git a/index.js b/index.js new file mode 100644 index 0000000..48bd17d --- /dev/null +++ b/index.js @@ -0,0 +1,49 @@ +const axios = require('axios'); + +function checkSiteStatus(site) { + return Promise.race([ + axios.get(`https://${site}/api/v1/instance`), + new Promise((resolve, reject) => { + setTimeout(() => reject(new Error('Tempo de espera excedido')), 30000); + }) + ]) + .then(response => { + return { site, status: 'online' }; + }) + .catch(error => { + return { site, status: 'offline' }; + }); +} + +async function fetchSitesFromAPI() { + try { + const response = await axios.get('https://mastodon.social/api/v1/instance/peers'); + return response.data; + } catch (error) { + console.error('Erro ao buscar sites da API:', error.message); + return []; + } +} + +async function checkAllSitesStatus() { + const sites = await fetchSitesFromAPI(); + + if (sites.length === 0) { + console.log('Nenhum site encontrado na API.'); + return; + } + + const results = []; + + for (const site of sites) { + try { + const result = await checkSiteStatus(site); + console.log(`${result.site} está ${result.status}.`); + results.push(result); + } catch (error) { + console.error(`Erro ao verificar o status de ${site}:`, error.message); + } + } +} + +checkAllSitesStatus();