Added Debug Log and info pickup older 6month + hygiene crt

This commit is contained in:
2025-12-16 12:05:16 +01:00
parent ca81121f3d
commit f4323e20de
9 changed files with 842 additions and 20 deletions

View File

@@ -1,4 +1,5 @@
const axios = require('axios');
const requestLogStore = require('./requestLogStore');
const BASE_URL = 'https://foodsharing.de';
@@ -11,6 +12,49 @@ const client = axios.create({
}
});
client.interceptors.request.use((config) => {
config.metadata = { startedAt: Date.now() };
return config;
});
client.interceptors.response.use(
(response) => {
const startedAt = response?.config?.metadata?.startedAt || Date.now();
try {
requestLogStore.add({
direction: 'outgoing',
target: 'foodsharing.de',
method: (response.config?.method || 'GET').toUpperCase(),
path: response.config?.url || '',
status: response.status,
durationMs: Date.now() - startedAt,
responseBody: response.data
});
} catch (error) {
console.warn('[REQUEST-LOG] Outgoing-Log fehlgeschlagen:', error.message);
}
return response;
},
(error) => {
const startedAt = error?.config?.metadata?.startedAt || Date.now();
try {
requestLogStore.add({
direction: 'outgoing',
target: 'foodsharing.de',
method: (error.config?.method || 'GET').toUpperCase(),
path: error.config?.url || '',
status: error?.response?.status || null,
durationMs: Date.now() - startedAt,
error: error?.message || 'Unbekannter Fehler',
responseBody: error?.response?.data
});
} catch (logError) {
console.warn('[REQUEST-LOG] Outgoing-Error-Log fehlgeschlagen:', logError.message);
}
return Promise.reject(error);
}
);
function extractCsrfToken(cookies = []) {
if (!Array.isArray(cookies)) {
return null;
@@ -230,6 +274,16 @@ async function pickupRuleCheck(storeId, utcDate, profileId, session) {
return response.data?.result === true;
}
async function fetchStoreMembers(storeId, cookieHeader) {
if (!storeId) {
return [];
}
const response = await client.get(`/api/stores/${storeId}/member`, {
headers: buildHeaders(cookieHeader)
});
return Array.isArray(response.data) ? response.data : [];
}
async function bookSlot(storeId, utcDate, profileId, session) {
await client.post(
`/api/stores/${storeId}/pickups/${utcDate}/${profileId}`,
@@ -248,6 +302,7 @@ module.exports = {
fetchPickups,
fetchRegionStores,
fetchStoreDetails,
fetchStoreMembers,
pickupRuleCheck,
bookSlot
};