qus-canvas
Version:
client api for canvas
96 lines (95 loc) • 3.9 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoursesFactory = void 0;
const endpoints_1 = require("../config/endpoints");
const case_converter_1 = require("../../utils/case.converter");
class CoursesFactory {
constructor(connector, version, accountId) {
this.connector = connector;
this.version = version;
this.accountId = accountId;
}
/**
* Fetch courses from the API
*
* @param endpoint
* @private
*/
fetchCourses(endpoint) {
return __awaiter(this, void 0, void 0, function* () {
console.log(`Fetching courses from endpoint: ${endpoint}`);
const response = yield this.connector.get(endpoint);
console.log(response);
if (response) {
const courses = (0, case_converter_1.toCamelCase)(response.data);
const coursePromises = courses.map((course) => __awaiter(this, void 0, void 0, function* () {
return (Object.assign(Object.assign({}, course), { id: '', courseNumber: course.id, remoteCreatedAt: course.createdAt, remoteUuid: course.uuid }));
}));
return yield Promise.all(coursePromises);
}
return [];
});
}
/**
* List courses
*
* @param page
* @param size
*/
listCourses(page, size) {
return __awaiter(this, void 0, void 0, function* () {
const endpoint = new endpoints_1.Endpoints().LIST_COURSES
.replace(':version', this.version)
.replace(':account_id', this.accountId)
.replace(':page', page.toString())
.replace(':size', size.toString());
return this.fetchCourses(endpoint);
});
}
/**
* Get a course by ID
*
* @param courseId
*/
getCourse(courseId) {
return __awaiter(this, void 0, void 0, function* () {
const endpoint = new endpoints_1.Endpoints().GET_COURSE
.replace(':version', this.version)
.replace(':course_id', courseId);
const response = yield this.connector.request('GET', endpoint);
if (response) {
const course = (0, case_converter_1.toCamelCase)(response.data);
return Object.assign(Object.assign({}, course), { id: '', courseNumber: course.id // Map API id to courseId
});
}
});
}
/**
* List courses by enrollment term
*
* @param enrollmentTermId
* @param page
* @param size
*/
listCoursesByEnrollmentTerm(enrollmentTermId, page, size) {
return __awaiter(this, void 0, void 0, function* () {
const endpoint = new endpoints_1.Endpoints().LIST_COURSES
.replace(':version', this.version)
.replace(':account_id', this.accountId)
.replace('enrollment_term_id', enrollmentTermId.toString())
.replace(':page', page.toString())
.replace(':size', size.toString());
return this.fetchCourses(endpoint);
});
}
}
exports.CoursesFactory = CoursesFactory;