codeths / codeths/ethsbell-rewrite
iCal parser can't read event names past a colon
- Dominant language
- Rust
- Stars
- 6
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
As the title suggests, the iCal parser currently only seems to return the part of an event title that comes before a colon, if there's a colon in the title.
For example, consider the following iCal event taken from the ETHS calendar:
```ical
BEGIN:VEVENT
DTSTAMP:20251109T193139Z
UID:1ae483b3-4808-5d26-9a4f-ab1bc90bf665
DTSTART;TZID=America/Chicago:20260409T080000
DTEND;TZID=America/Chicago:20260409T133000
DESCRIPTION:State preACT - Freshman only. \n\n\nNO SCHOOL for Sophomores\,
Juniors &\; Seniors
LOCATION:ETHS
SUMMARY:State Pre-ACT exam for grade 9: No school for grades 10\, 11 & 12
END:VEVENT
```
Under the current behavior, the parsed title for this event would be "State Pre-ACT exam for grade 9", which notably leaves out the latter half of the title, which includes "No school".
As of writing, you can confirm this by going a GET request to [https://ethsbell.app/api/v1/schedule](https://ethsbell.app/api/v1/schedule), searching for `2026-04-09` in the response, and noticing that the event title is incomplete.
> [!NOTE]
> If you're fixing this and checking the `/api/v1/schedule` response for the event I mentioned, and you fix the bug, the response won't actually show the full title. It would actually just return something like `{"ScheduleOverride": "no_school"}` for that day.
### Impact
The practical impact of this bug is that automatic detection of certain types of days won't catch these events properly like it typically does. In other words, ETHSBell won't know that there's no school, so someone would need to manually edit the schedule override calendar in order to correct the mistake.
### Summary
Overall, not a huge deal, but a bug is a bug.
Contributor guide
Research direction
Start by tracing the iCal parser used by the /api/v1/schedule endpoint and reproduce the example SUMMARY containing a colon. The fix is done when the parsed event retains the complete title and automatic no-school detection handles this event; verify the schedule response or relevant parser behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100