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.
How to set up locally. This package is not currently published to npm.
git clone https://github.com/ewanbrinkman/sfu-course-api-wrapper.git
sfu-course-api-wrapper.cd sfu-course-api-wrapper
npm install
npm run build
sfu-course-api-wrapper in your own project as shown below. The path is the
where the sfu-api-folder is located, NOT the location of the lib
folder created by npm run build in step 4 above.npm install /path/to/local/sfu-course-api-wrapper/installed/package
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