An asynchronous TypeScript wrapper for SFU's course API.
Usage Examples
·
TypeDoc Documentation
Report Bug
·
Request Feature
This project was made since there is no developed wrapper that I know of for SFU's API. The goal is to not simply return the JSON data from the API, but custom classes with useful methods.
Also, this package has zero runtime dependencies! The package.json file only has "devDependencies", and no "dependencies".
This project is not endorsed or supported by Simon Fraser University.
Install the package from npm: npm install course-api-wrapper
Example usage of this API wrapper are shown below. For more detail, including all the properties each class has, see the TypeDoc Documentation.
Note that the API wrapper functions are the default export, while classes returned by the API wrapper functions and types used by this API wrapper are named exports.
In a non-async environment:
import courseApiWrapper from 'course-api-wrapper';
courseApiWrapper
.courseSection('cmpt', '120', 'd100', 2021, 'fall')
.then((courseSection) => {
console.log(courseSection);
});
In an async environment:
import courseApiWrapper from 'course-api-wrapper';
(async () => {
const courseSection = await courseApiWrapper.courseSection(
'cmpt',
'105w',
'd100',
2022,
'fall',
);
console.log(courseSection);
})();
Get a course:
const course = await courseApiWrapper.course('cmpt', '120', 2021, 'fall');
Get a course offering:
const courseSection = await courseApiWrapper.courseSection(
'cmpt',
'120',
'd100',
2021,
'fall',
);
For the examples, assume an instance of class Course
(found in
Course.ts) called course
has been created.
Check if a course has a given section:
const hasSection = await course.hasSection('d100');
Get a section of a course:
const courseSection = await course.getSection('d100');
Get all course offering sections of a course:
const courseSections = await course.getSections();
Loop through all course offering sections of a course:
for await (const courseSection of course) {
console.log(courseSection);
}
Feel free to fork and create a pull request, or open an issue.
Distributed under the MIT License. See LICENSE
for more information.
Ewan Brinkman
Project Link: https://github.com/ewanbrinkman/sfu-course-api-wrapper
[contributors-shield]: https://img.shields.io/github/contributors/ewanbrinkman/sfu-course-api-wrapper.svg?style=for-the-badge [contributors-url]: https://github.com/ewanbrinkman/sfu-course-api-wrapper/graphs/contributors [forks-shield]: https://img.shields.io/github/forks/ewanbrinkman/sfu-course-api-wrapper.svg?style=for-the-badge [forks-url]: https://github.com/ewanbrinkman/sfu-course-api-wrapper/network/members [stars-shield]: https://img.shields.io/github/stars/ewanbrinkman/sfu-course-api-wrapper.svg?style=for-the-badge
[issues-shield]: https://img.shields.io/github/issues/ewanbrinkman/sfu-course-api-wrapper.svg?style=for-the-badge
[license-shield]: https://img.shields.io/github/license/ewanbrinkman/sfu-course-api-wrapper.svg?style=for-the-badge [license-url]: https://github.com/ewanbrinkman/sfu-course-api-wrapper/blob/main/LICENSE [linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555