57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
const axios = require('axios');
|
|
|
|
class InstanceChecker {
|
|
constructor() {
|
|
this.axiosInstance = axios.create();
|
|
}
|
|
|
|
async checkInstanceStatus(instance) {
|
|
try {
|
|
const response = await Promise.race([
|
|
this.axiosInstance.get(`https://${instance}/api/v1/instance`),
|
|
new Promise((resolve, reject) => {
|
|
setTimeout(() => reject(new Error('Tempo de espera excedido')), 6000);
|
|
})
|
|
]);
|
|
|
|
return { instance, status: true };
|
|
} catch (error) {
|
|
return { instance, status: false };
|
|
}
|
|
}
|
|
|
|
async fetchPeersFromAPI() {
|
|
try {
|
|
const response = await this.axiosInstance.get('https://mastodon.social/api/v1/instance/peers');
|
|
return response.data;
|
|
} catch (error) {
|
|
console.error('Erro ao buscar peers da API:', error.message);
|
|
return [];
|
|
}
|
|
}
|
|
|
|
async checkPeersStatus() {
|
|
const peers = await this.fetchPeersFromAPI();
|
|
|
|
if (peers.length === 0) {
|
|
console.log('Nenhum peer encontrado na API.');
|
|
return;
|
|
}
|
|
|
|
const results = [];
|
|
|
|
for (const peer of peers) {
|
|
try {
|
|
const result = await this.checkInstanceStatus(peer);
|
|
console.log(`${result.instance} está ${result.status}.`);
|
|
results.push(result);
|
|
} catch (error) {
|
|
console.error(`Erro ao verificar o status de ${peer}:`, error.message);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
const instanceChecker = new InstanceChecker();
|
|
instanceChecker.checkPeersStatus();
|