feat: Refactor S3 last modified endpoint and Dashboard data fetching to handle errors gracefully
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 6m7s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 6m7s
This commit is contained in:
+29
-9
@@ -436,22 +436,42 @@ app.post('/api/filters', async (req, res) => {
|
||||
// Новый эндпоинт для получения дат последнего изменения файлов S3
|
||||
app.get('/api/s3/last-modified', async (req, res) => {
|
||||
try {
|
||||
const [domainsHead, domainsNewHead, asnsHead, serversHead, filtersHead] = await Promise.all([
|
||||
const results = await Promise.allSettled([
|
||||
s3.headObject({ Bucket: BUCKET_NAME, Key: 'bgp_data/domains.txt' }).promise(),
|
||||
s3.headObject({ Bucket: BUCKET_NAME, Key: 'bgp_data/domains_community.txt' }).promise(),
|
||||
s3.headObject({ Bucket: BUCKET_NAME, Key: 'bgp_data/asns.txt' }).promise(),
|
||||
s3.headObject({ Bucket: BUCKET_NAME, Key: 'servers.json' }).promise(),
|
||||
s3.headObject({ Bucket: BUCKET_NAME, Key: 'filters.json' }).promise()
|
||||
]);
|
||||
res.json({
|
||||
domainsLastModified: domainsHead.LastModified ? domainsHead.LastModified.toISOString() : null,
|
||||
domainsNewLastModified: domainsNewHead.LastModified ? domainsNewHead.LastModified.toISOString() : null,
|
||||
asnsLastModified: asnsHead.LastModified ? asnsHead.LastModified.toISOString() : null,
|
||||
serversLastModified: serversHead.LastModified ? serversHead.LastModified.toISOString() : null,
|
||||
filtersLastModified: filtersHead.LastModified ? filtersHead.LastModified.toISOString() : null
|
||||
});
|
||||
|
||||
const response = {
|
||||
domainsLastModified: null,
|
||||
domainsNewLastModified: null,
|
||||
asnsLastModified: null,
|
||||
serversLastModified: null,
|
||||
filtersLastModified: null
|
||||
};
|
||||
|
||||
// Обрабатываем результаты
|
||||
if (results[0].status === 'fulfilled') {
|
||||
response.domainsLastModified = results[0].value.LastModified ? results[0].value.LastModified.toISOString() : null;
|
||||
}
|
||||
if (results[1].status === 'fulfilled') {
|
||||
response.domainsNewLastModified = results[1].value.LastModified ? results[1].value.LastModified.toISOString() : null;
|
||||
}
|
||||
if (results[2].status === 'fulfilled') {
|
||||
response.asnsLastModified = results[2].value.LastModified ? results[2].value.LastModified.toISOString() : null;
|
||||
}
|
||||
if (results[3].status === 'fulfilled') {
|
||||
response.serversLastModified = results[3].value.LastModified ? results[3].value.LastModified.toISOString() : null;
|
||||
}
|
||||
if (results[4].status === 'fulfilled') {
|
||||
response.filtersLastModified = results[4].value.LastModified ? results[4].value.LastModified.toISOString() : null;
|
||||
}
|
||||
|
||||
res.json(response);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
console.error('Error fetching last modified dates from S3:', error);
|
||||
res.status(500).send('Error fetching last modified dates from S3');
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user