getCourseOffering method
- String courseNumber
override
Fetches a course offering by its course number.
Returns null only when the course system explicitly reports that the
number does not exist. Malformed or inconsistent responses throw so that
callers do not cache a server or parser failure as a missing offering.
Throws an ArgumentError when courseNumber is blank.
Implementation
@override
Future<CourseOfferingDto?> getCourseOffering(String courseNumber) async {
final number = courseNumber.trim();
if (number.isEmpty) {
throw ArgumentError.value(
courseNumber,
'courseNumber',
'must not be blank',
);
}
if (courseOfferingResult case final result?) return result;
for (final semester in await getCourseSemesterList()) {
for (final schedule in await getCourseTable(
username: '',
semester: semester,
)) {
if (schedule.number != number) continue;
return (
semester: semester,
schedule: schedule,
courseType: null,
enrolled: null,
withdrawn: null,
);
}
}
return null;
}