mirror of
https://github.com/System-End/site.git
synced 2026-04-19 22:05:11 +00:00
54 lines
2.2 KiB
JavaScript
54 lines
2.2 KiB
JavaScript
export default async (req, res) => {
|
|
const calendarId = "c_e7c63a427761b0f300ede97f432ba4af24033daad26be86da0551b40b7968f00@group.calendar.google.com";
|
|
const apiKey = "AIzaSyD_8dEnTDle3WmaoOTvEW6L1GW540FU_wg"; // Replace with your API Key
|
|
|
|
let allBusyDays = new Set();
|
|
|
|
try {
|
|
const currentDateTime = new Date();
|
|
const adjustedDateTime = new Date(currentDateTime.getTime() + (currentDateTime.getTimezoneOffset() + 240) * 60 * 1000); // Adjust to GMT-04
|
|
const startTime = adjustedDateTime.toISOString();
|
|
const endTime = new Date(adjustedDateTime.getTime() + 30 * 24 * 60 * 60 * 1000).toISOString();
|
|
|
|
const response = await fetch(`https://www.googleapis.com/calendar/v3/freeBusy?key=${apiKey}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify({
|
|
timeMin: startTime,
|
|
timeMax: endTime,
|
|
items: [{ id: calendarId }]
|
|
})
|
|
});
|
|
|
|
const data = await response.json();
|
|
|
|
if (data.error) {
|
|
return res.status(400).json({ error: data.error.message });
|
|
}
|
|
|
|
// Assuming there are time ranges where the calendar is busy:
|
|
const busyTimes = data.calendars[calendarId].busy;
|
|
|
|
// For each busy time range, extract all days that are busy:
|
|
for (let busy of busyTimes) {
|
|
let startDate = new Date(busy.start);
|
|
let endDate = new Date(busy.end);
|
|
|
|
// Adjust dates to GMT-04
|
|
startDate = new Date(startDate.getTime() + (startDate.getTimezoneOffset() + 240) * 60 * 1000);
|
|
endDate = new Date(endDate.getTime() + (endDate.getTimezoneOffset() + 240) * 60 * 1000);
|
|
|
|
while (startDate < endDate) {
|
|
allBusyDays.add(startDate.toISOString().split('T')[0]);
|
|
startDate = new Date(startDate.getTime() + 24 * 60 * 60 * 1000); // Adding 24 hours for the next date
|
|
}
|
|
}
|
|
|
|
return res.status(200).json([...allBusyDays]);
|
|
|
|
} catch (error) {
|
|
return res.status(500).json({ error: "Failed to fetch busy times." });
|
|
}
|
|
};
|