refactor: refactor sanitizeFilename utility that ensures valid file names

This commit is contained in:
Ryan Mwangi 2024-11-07 14:18:18 +03:00
parent cf10a62049
commit af74d809c4
3 changed files with 63 additions and 4 deletions

46
calendar/test.ics Normal file
View File

@ -0,0 +1,46 @@
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//sebbo.net//ical-generator//EN
NAME:test
X-WR-CALNAME:test
BEGIN:VEVENT
UID:881z@Ryan-jr
SEQUENCE:0
DTSTAMP:20241107T111355Z
DTSTART:20240930T113000Z
DTEND:20240930T123000Z
SUMMARY:work other work
END:VEVENT
BEGIN:VEVENT
UID:lhyi@Ryan-jr
SEQUENCE:0
DTSTAMP:20241107T111355Z
DTSTART:20241003T190000Z
DTEND:20241003T200000Z
SUMMARY:work progodessey
END:VEVENT
BEGIN:VEVENT
UID:5l54@Ryan-jr
SEQUENCE:0
DTSTAMP:20241107T111355Z
DTSTART:20241009T173000Z
DTEND:20241009T183000Z
SUMMARY:work do
END:VEVENT
BEGIN:VEVENT
UID:cp96@Ryan-jr
SEQUENCE:0
DTSTAMP:20241107T111355Z
DTSTART:20241001T183000Z
DTEND:20241001T193000Z
SUMMARY:Other work calmerge
END:VEVENT
BEGIN:VEVENT
UID:jxsj@Ryan-jr
SEQUENCE:0
DTSTAMP:20241107T111355Z
DTSTART:20241010T173000Z
DTEND:20241010T183000Z
SUMMARY:Other work to do
END:VEVENT
END:VCALENDAR

15
calendar/test.json Normal file
View File

@ -0,0 +1,15 @@
{
"linkGroupName": "test",
"calendars": [
{
"prefix": "work",
"override": false,
"url": "https://calendar.google.com/calendar/ical/b4c66eb4bb2cc15257d071bab3f935385778b042112ea1aaedada47f3f1a6e3a%40group.calendar.google.com/public/basic.ics"
},
{
"prefix": "Other work",
"override": false,
"url": "https://calendar.google.com/calendar/ical/774518759e4e2dd42aab0c511b02397bb216f3b67dc425d76bae07d1eff529d6%40group.calendar.google.com/public/basic.ics"
}
]
}

View File

@ -18,10 +18,8 @@ fs.mkdirSync(MERGED_CALENDARS_DIR, { recursive: true });
app.get('/script.js', (req, res) => res.sendFile('script.js', { root: '.' })); app.get('/script.js', (req, res) => res.sendFile('script.js', { root: '.' }));
app.get('/', (req, res) => res.sendFile('index.html', { root: '.' })); app.get('/', (req, res) => res.sendFile('index.html', { root: '.' }));
// Function to sanitize the linkGroupName for use as a filename // Utility to sanitize filenames
function sanitizeFilename(filename) { const sanitizeFilename = (filename) => filename.replace(/[<>:"/\\|?* ]/g, '_');
return filename.replace(/[<>:"/\\|?* ]/g, '_'); // Replace invalid characters with underscores
}
// Merge calendars endpoint // Merge calendars endpoint
app.post('/merge', async (req, res) => { app.post('/merge', async (req, res) => {